フォームタグ内に単純な入力フィールドがあります。
<body>
<form action="#">
<label>Input</label>
<input type="hidden" id="foo" name="foo" />
</form>
</body>
私はjsファイルからこの値を設定しようとしました:
$(document).ready(function(){
$('#foo').val('foo')
})
ただし、htmlソースでは、属性はまったく設定されていません。入力タイプを「ボタン」などに設定しようとすると、機能します。 hidden
入力フィールドではできません。私は何を間違えていますか?
Valタグを設定した場合、非表示フィールドから値を取得できますか?
例えば.
<input type="hidden" id="foo" name="foo" value="bar" />
$(document).ready(function(){
alert($('#foo').val());
})
私はそれを考え出した。値はjQueryによって設定されましたが、ソースを表示したときに新しい値が表示されませんでした。私はこれを試しました(フェルミンのおかげで):
$('#foo').val('poo')
alert($('#foo').val())
変更された値が表示されました。
私が見つけた最良の答えは http://forum.jquery.com/topic/passing-value-to-hidden-form-field という形式でした。
$('#Data').val(data);
の代わりに、非表示フィールドIDが 'Data'の場合
$('input[name=Data]').val(data);
を使用します
私にぴったり
私もこれに苦労しています。初期値を「0」と設定し、Firebugなどを使用してDOMを監視すると、DOMが更新されることに気付くでしょう。何らかの理由で、初期値がnullまたは空の文字列に設定されている場合、DOMは更新されませんが、値は実際に保存されます。
これをテストするには、valを設定した後、valにアラートを送信します(以前の投稿で提案されています)。
フォームをPOST
-- ingし、PHPスクリプトがPOST
- ed値を取得できなかったときにこの問題が発生しました。これを使用しました。
$('#elemId').attr("name", theValue);
それが役に立てば幸い。
私はそれが遅れることを知っていますが、それでも誰かを助けるかもしれません....上記の解決策のどれもうまくいかないなら、ただこれをしてください...
$(document).ready(function() {
$('#foo').attr("value","foo") });
非表示の入力フィールドでも同じ問題が発生しました。 Idの初期値を0に設定すると、正常に動作しますが、初期値0を使用したくない場合があります。そのため、value = ""(空白)でテストしました。値dynamicをPHPから入力すると、value="<?= $val+0; ?>"
0が適切な場合、またはvalue="<?= $val; ?> "
空白が問題ない場合。
ファイル全体を表示する必要がありますが、jQuery.jsソースファイルを含めていないか、IDがfoo
の複数の要素があると思います
私は、隠しフィールドの値を設定しても、このようなjQueryセレクターでは機能しないことを確認しました...
$('[name="my_field"]').val('Something');
隠しフィールドを更新しません...ちょっと衝撃的です。
<input type="hidden" name="my_field" id="my_field">
代わりにCSSの非表示フィールドを使用することを余儀なくされました。
<input type="text" name="my_field" id="my_field" style="display:none">
どうやら隠しフィールドのidの使用には他の問題もあるようです... jQueryを使用してフォームに隠しフィールドの値を設定する「.val()」は機能しません
注:検査ではなく、必ずコンソールで値を取得してください。
$('[name="my_field"]').val();
代わりに、文字列でvalue属性を初期化し、このように入力を初期化します。
<input type="hidden" name="foo" id="foo" value="${foo}">
「foo」には、設定した新しい値も含まれます。
上記の解決策はどれも私にとってはうまくいきませんでした。
私はそれを機能させるために以下をしなければなりませんでした:
$('#foo').val(data).blur();