无法使用jQuery设置隐藏的输入字段的值

时间:2010-01-21 13:02:03

标签: jquery hidden-field

我在表单标记中有一个简单的输入字段:

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

  </form>
</body>

我尝试从js文件中设置此值:

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

但是在html源代码中根本没有设置该属性。如果我尝试将输入类型设置为“按钮”或其他任何东西,它就可以工作。我只是不能使用hidden输入字段。我做错了什么?

11 个答案:

答案 0 :(得分:26)

如果设置了val标签,可以从隐藏字段中检索值吗?

e.g。

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

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

答案 1 :(得分:25)

我明白了。该值由jQuery设置,但是当我查看源时,未显示新值。我试过这个(感谢Fermin):

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

并显示修改后的值。

答案 2 :(得分:23)

我找到的最佳答案是http://forum.jquery.com/topic/passing-value-to-hidden-form-field形式。

而不是$('#Data').val(data);隐藏字段ID为“数据”的位置

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

完美适合我

答案 3 :(得分:4)

我一直在努力解决这个问题。如果你设置一个初始值说'0',然后使用类似Firebug的东西观察DOM,你会发现DOM然后更新。出于某种原因,如果初始值设置为null或空字符串,则DOM不会更新,但实际上仍然存储该值。

您可以在设置之后通过警告来测试这一点(如之前的帖子所示)

答案 4 :(得分:2)

POST我的表单时,我遇到了这个问题,我的PHP脚本无法获得POST - ed值。我用过这个:

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

希望它有所帮助。

答案 5 :(得分:1)

我需要查看整个文件,但我的猜测是你没有包含jQuery.js源文件,或者你有多个ID为foo的元素

答案 6 :(得分:1)

我在隐藏输入字段时遇到了同样的问题。 我将初始值设置为0,它工作正常,但有时我不希望初始值为0。 所以我测试了值=“”,一个空格,它也适用于我。 如果从PHP填充值动态,如果0对你来说可以value="<?= $val+0; ?>",或者如果空格很好就可以value="<?= $val; ?> "

答案 7 :(得分:1)

我知道现在已经很晚了,但这可能对某人有所帮助......如果以上解决方案都不起作用,那就去做吧......

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

答案 8 :(得分:0)

上述解决方案均不适合我。

我必须执行以下操作才能使其正常工作:

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

答案 9 :(得分:0)

而不是用字符串初始化你的value属性,就像这样初始化你的输入。

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

“foo”将包含您设置的新值。

答案 10 :(得分:0)

我已经确认设置隐藏字段的值不能像这样使用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 还存在其他问题... Set value of hidden field in a form using jQuery's ".val()" doesn't work

注意:请务必在控制台中获取值,而不是通过检查。

$('[name="my_field"]').val();