使用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查询。