我在表单标记中有一个简单的输入字段:
<body>
<form action="#">
<label>Input</label>
<input type="hidden" id="foo" name="foo" />
</form>
</body>
我尝试从js文件中设置此值:
$(document).ready(function(){
$('#foo').val('foo')
})
但是在html源代码中根本没有设置该属性。如果我尝试将输入类型设置为“按钮”或其他任何东西,它就可以工作。我只是不能使用hidden
输入字段。我做错了什么?
答案 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();