使用jQuery的“.val()”设置隐藏字段的值不起作用
我一直在尝试使用jQuery来设置表单中隐藏字段的值,但没有成功。
以下是解释问题的示例代码。 如果我保持inputtypes为“文本”,它没有任何麻烦的工作。 但是,将inputtypes更改为“隐藏”不起作用!
<html> <head> <script type="text/javascript" src="jquery.js"> </script> <script type="text/javascript"> $(document).ready(function() { $("button").click(function() { $("input:text#texens").val("tinkumaster"); }); }); </script> </head> <body> <p> Name: <input type="hidden" id="texens" name="user" value="texens" /> </p> <button> Change value for the text field </button> </body> </html> 我还尝试了以下解决方法,将inputtypes设置为“text”,然后对input框使用“display:none”样式。 但是,这也失败了! 看来jQuery有一些麻烦设置隐藏或不可见的input字段。
有任何想法吗? 有没有解决这个问题的方法呢?
  :text对于types值为hidden的input, :text将失败。 使用以下function也更为有效: 
 $("#texens").val("tinkumaster"); 
ID属性在网页上应该是唯一的,确保你的是可能导致你遇到的任何问题,并指定一个更复杂的select器只是放慢速度,看起来不整洁。
http://jsbin.com/elovo/edit示例,使用您的示例代码http://jsbin.com/elovo/2/edit
如果您在设置隐藏字段的值时遇到问题,因为您正在向其传递ID,这就是解决scheme:
 而不是$("#hidden_field_id").val(id)只是做$("input[id=hidden_field_id]").val(id) 。 不知道有什么区别,但它的作品。 
最后,我find了一个解决scheme,它很简单:
 document.getElementById("texens").value = "tinkumaster"; 
奇迹般有效。 没有线索为什么jQuery不会回落到这一点。
我有同样的问题。 奇怪的是,谷歌铬和其他可能(不知道)不喜欢
 $("#thing").val(0); input type="hidden" id="thing" name="thing" value="1" /> 
(不用找了)
 $("#thing").val("0"); input type="hidden" id="thing" name="thing" value="1" /> 
(不用找了)
但这个作品!
 $("#thing").val("no"); input type="hidden" id="thing" name="thing" value="no" /> 
变化!!
 $("#thing").val("yes"); input type="hidden" id="thing" name="thing" value="yes" /> 
变化!!
必须是一个“string的事情”
.val没有为我工作,因为我抓住价值属性服务器端 ,价值并不总是更新。 所以我用:
 var counter = 0; $('a.myClickableLink').click(function(event){ event.preventDefault(); counter++; ... $('#myInput').attr('value', counter); } 
希望它可以帮助别人。
其实这是一个持续的问题。 尽pipeAndy对下载的源码是正确的,但.val(…)和.attr('value',…)实际上并没有修改html。 我认为这是一个JavaScript问题,而不是一个jQuery的问题。 如果你使用过萤火虫,即使你也有同样的问题。 虽然看起来如果你提交的表单修改后的值会通过,html不会改变。 我遇到了这个问题,试图创build修改后的表单的打印预览(做[form] .html())它复制一切正常,包括除了值更改的所有更改。 因此,我的模式打印预览是没有用的…我的解决方法可能必须是“build立”一个隐藏的表单,其中包含他们添加的值,或独立生成预览,并进行修改,使用户也修改预览。 两者都不是最理想的,但除非有人知道为什么值设置行为不会改变html(在我假设的DOM中),它将不得不这样做。
 $('input[name=hidden_field_name]').val('newVal'); 
为我工作的时候,也没有
 $('input[id=hidden_field_id]').val('newVal'); 
也不
 $('#hidden_field_id').val('newVal'); 
没有。
我有同样的问题,我发现什么是错的。 我有HTML定义为
 <form action="url" method="post"> <input type="hidden" id="email" /> <form> <script> function onsomeevent() { $("#email").val("a@a.com"); } </script> 
读取服务器上的表单值总是导致电子邮件为空。 抓了我的头(和大量的search)后,我意识到错误是没有正确定义表格/input。 在修改input时(如下图所示),它的function就像一个魅力
 <input type="hidden" id="email" name="email" /> 
添加到这个线程,以防其他人有相同的问题。
 使用val()不适合我。 我不得不在所有地方都使用.attr() 。 此外,我有不同types的input,并在checkbox和select菜单的情况下,必须非常明确。 
更新文本框
 $('#model_name').attr('value',nameVal); 
更新文件input旁边的图像
 $('#img-avatar').attr('src', avatarThumbUrl); 
更新布尔值
 if (isActive) { $('#model_active').attr('checked',"checked"); } else { $('#model_active').attr('checked', null) ; } 
更新select (使用数字或string)
 $('#model_framerate').children().each(function(i, el){ var v = $(el).val(); if (v === String(framerateVal)) { $(el).attr('selected','selected'); } else { $(el).attr('selected',null); } } 
 另一个问题在这里浪费了我的一些时间,所以我想我会通过小费。 我有一个隐藏的领域,我给了一个身份证。 和[]括号中的名称(由于使用struts2)和select器$("#model.thefield[0]")不会find我的隐藏字段。 重命名id不使用句点和括号导致select器开始工作。 所以最后我最终得到了model_the_field_0的id,select器工作正常。 
使用ID:
 $('input:hidden#texens').val('tinkumaster'); 
使用类:
 $('input:hidden.many_texens').val('tinkumaster'); 
在我的情况下,我使用一个非string(整数)作为val()的参数不起作用,诀窍就像
 $("#price").val('' + price); 
 <javascript> slots=''; hidden=''; basket = 0; cost_per_slot = $("#cost_per_slot").val(); //cost_per_slot = parseFloat(cost_per_slot).toFixed(2) for (i=0; i< check_array.length; i++) { slots += check_array[i] + '\r\n'; hidden += check_array[i].substring(0, 8) + '|'; basket = (basket + parseFloat(cost_per_slot)); } // Populate the Selected Slots section $("#selected_slots").html(slots); // Update hidden slots_booked form element with booked slots $("#slots_booked").val(hidden); // Update basket total box basket = basket.toFixed(2); $("#total").html(basket); 
只需使用下面的get和set语法
得到
 //Script var a = $("#selectIndex").val(); 
这里一个variables将保存hiddenfield的值(selectindex)
服务器端
 <asp:HiddenField ID="selectIndex" runat="server" Value="0" /> 
组
 var a =10; $("#selectIndex").val(a); 
任何人都在为此而苦苦挣扎,有一种非常简单的“内联”方式可以用jQuery做到这一点:
 <input type="search" placeholder="Search" value="" maxlength="256" id="q" name="q" style="width: 300px;" onChange="$('#ADSearch').attr('value', $('#q').attr('value'))"><input type="hidden" name="ADSearch" id="ADSearch" value=""> 
这将使用onChange事件将文本input到可见input中,从而设置隐藏字段的值。 有用的(就像我的情况),你想传递一个字段值到“高级search”的forms,而不是强迫用户重新input他们的search查询。