web-dev-qa-db-ja.com

jQueryを使用して非表示の入力フィールドの値を設定できません

フォームタグ内に単純な入力フィールドがあります。

<body>
  <form action="#">
      <label>Input</label>
      <input type="hidden" id="foo" name="foo" />

  </form>
</body>

私はjsファイルからこの値を設定しようとしました:

$(document).ready(function(){
    $('#foo').val('foo')
})

ただし、htmlソースでは、属性はまったく設定されていません。入力タイプを「ボタン」などに設定しようとすると、機能します。 hidden入力フィールドではできません。私は何を間違えていますか?

34
framomo86

Valタグを設定した場合、非表示フィールドから値を取得できますか?

例えば.

<input type="hidden" id="foo" name="foo" value="bar" />

$(document).ready(function(){
  alert($('#foo').val());
})
26
Fermin

私はそれを考え出した。値はjQueryによって設定されましたが、ソースを表示したときに新しい値が表示されませんでした。私はこれを試しました(フェルミンのおかげで):

$('#foo').val('poo')
alert($('#foo').val())

変更された値が表示されました。

25
framomo86

私が見つけた最良の答えは http://forum.jquery.com/topic/passing-value-to-hidden-form-field という形式でした。

$('#Data').val(data);の代わりに、非表示フィールドIDが 'Data'の場合

$('input[name=Data]').val(data);を使用します

私にぴったり

23
Jacob Tomlinson

私もこれに苦労しています。初期値を「0」と設定し、Firebugなどを使用してDOMを監視すると、DOMが更新されることに気付くでしょう。何らかの理由で、初期値がnullまたは空の文字列に設定されている場合、DOMは更新されませんが、値は実際に保存されます。

これをテストするには、valを設定した後、valにアラートを送信します(以前の投稿で提案されています)。

4
Stevie G

フォームをPOST-- ingし、PHPスクリプトがPOST- ed値を取得できなかったときにこの問題が発生しました。これを使用しました。

$('#elemId').attr("name", theValue);

それが役に立てば幸い。

2
remo

私はそれが遅れることを知っていますが、それでも誰かを助けるかもしれません....上記の解決策のどれもうまくいかないなら、ただこれをしてください...

$(document).ready(function() {
$('#foo').attr("value","foo") });
1
GriffinTaimer

非表示の入力フィールドでも同じ問題が発生しました。 Idの初期値を0に設定すると、正常に動作しますが、初期値0を使用したくない場合があります。そのため、value = ""(空白)でテストしました。値dynamicをPHPから入力すると、value="<?= $val+0; ?>" 0が適切な場合、またはvalue="<?= $val; ?> "空白が問題ない場合。

1
mtom

ファイル全体を表示する必要がありますが、jQuery.jsソースファイルを含めていないか、IDがfooの複数の要素があると思います

1

私は、隠しフィールドの値を設定しても、このような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();
0
doublejosh

代わりに、文字列でvalue属性を初期化し、このように入力を初期化します。

<input type="hidden" name="foo" id="foo" value="${foo}">

「foo」には、設定した新しい値も含まれます。

0
Noris

上記の解決策はどれも私にとってはうまくいきませんでした。

私はそれを機能させるために以下をしなければなりませんでした:

$('#foo').val(data).blur();
0