35

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

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

  </form>
</body>

我试图从一个 js 文件中设置这个值:

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

但在 html 源代码中,该属性根本没有设置。如果我尝试将输入类型设置为“按钮”或其他任何内容,它会起作用。我只是不能用hidden输入字段来做到这一点。我究竟做错了什么?

4

11 回答 11

26

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

例如

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

$(document).ready(function(){
  alert($('#foo').val());
})
于 2010-01-21T13:09:51.303 回答
25

我想到了。该值是由 jQuery 设置的,但是当我查看源代码时,没有显示新值。我试过这个(感谢费尔明):

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

并显示修改后的值。

于 2010-01-21T13:18:04.637 回答
22

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

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

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

非常适合我

于 2011-10-19T13:53:00.410 回答
4

我也一直在为此苦苦挣扎。如果你设置了一个初始值,比如“0”,然后使用类似 Firebug 的东西来观察 DOM,你会注意到 DOM 随后会更新。出于某种原因,如果将初始值设置为 null 或空字符串,则 DOM 不会更新,但实际上仍会存储该值。

您可以通过在设置后提醒 val 来测试它(如之前的帖子中所建议的)

于 2010-10-15T11:09:28.280 回答
2

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

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

希望能帮助到你。

于 2011-05-17T10:40:26.037 回答
1

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

于 2010-01-21T13:09:40.507 回答
1

我对隐藏的输入字段有同样的问题。如果我将初始值设置为 0,它可以正常工作,但有时我不想将初始值设置为 0。所以我使用 value=""(一个空格)进行了测试,它也适用于我。如果您从 PHP 填充值动态,value="<?= $val+0; ?>"如果 0 对您来说很好,或者value="<?= $val; ?> "如果空格很好,您可以这样做。

于 2010-10-20T09:51:23.287 回答
1

我知道为时已晚,但这仍然可能对某人有所帮助....如果上述解决方案均无效,请执行此操作...

$(document).ready(function() {
$('#foo').attr("value","foo") });
于 2015-11-19T03:39:26.987 回答
0

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

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

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

于 2015-02-12T09:37:05.433 回答
0

以上解决方案都不适合我。

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

$('#foo').val(data).blur();
于 2013-07-19T04:55:36.990 回答
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还存在其他问题......使用 jQuery 的“.val()”在表单中设置隐藏字段的值不起作用

注意:一定要在控制台中获取值,而不是通过检查。

$('[name="my_field"]').val();
于 2018-04-19T01:59:56.037 回答