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