javascriptでテキスト入力フィールドを非表示にする必要があります。 IE(セキュリティ上の問題)では、type属性をhiddenに変更することはできません。JavaScriptでHTML入力フィールドを非表示にする方法
これを行うにはどうすればよいでしょうか?
注:jQueryまたは他のlibは想定できません。
javascriptでテキスト入力フィールドを非表示にする必要があります。 IE(セキュリティ上の問題)では、type属性をhiddenに変更することはできません。JavaScriptでHTML入力フィールドを非表示にする方法
これを行うにはどうすればよいでしょうか?
注:jQueryまたは他のlibは想定できません。
フォーム内の条件の変化に基づいてテキストフィールドを動的に表示および非表示にする必要があると仮定します。そうでない場合は、最初に<input type="hidden"...
にしてください。
フィールドをそのまま表示および非表示にするコードを維持しますが、onsubmit
イベントもキャッチします。
送信ハンドラでは、テキストフィールドをdocument.getElementById(...)
(またはdocument.forms[i]
にアクセスして)にして、それが隠されているかどうかを確認します。それが非表示になっている場合
、<input type="hidden" ...>
フィールドのための新たなDOMノードを作成し、おそらくmyform.appendChild(...)
を経由して、フォームにそのノードを追加します。サーバー側のコードで期待される名前を付ける必要があります。非表示のテキストフィールドの内容を新しく作成したtype = hiddenフィールドにコピーしてから、送信ハンドラから戻り、標準送信を続行できます。
また、送信時にテキストフィールドを非表示にすることもできますが、 "オフスクリーン"にする必要があります。そうしないと、送信処理中に再び表示されます。
これを変更できる唯一の方法は、DOMに追加する前です。新しい要素を作成し、現在の要素をその要素に置き換えることができます。
手動でDOMスクリプトを作成したいので、replaceChildとcreateElementを見てください。私はあなたが何をすべきかを知っていると思います。
EDIT:私が知る限り「隠された」フィールドはです。あなたはそれらがあるかどうかチェックしましたか?また、それらを相殺するためにposition:absolute; left:-9999em;
を行うこともできます。
document.myform.myelement.style.display = 'なし' でもInternet Explorerで期待通り
作品。
この値はフォーム提出の一部として提出されません – Nir
divまたはspanでラッピングし、非表示にする場合は表示スタイルをnoneに設定してから、必要に応じてブロック(divを使用した場合)またはインライン(spanを使用した場合)を設定します。それを表示する。
フォーム提出で値を送信する必要があります。私の知る限り、隠しアイテムはすべてのブラウザから送信されていません(入力タイプ= '非表示'を除く) – Nir
Re 'position:absolute' - はい。しかし、それはタブ順にとどまります。それを無効にしてタブ移動を防ぎますが、依然として送信時に送信されますか? –