tex*_*ens 184 jquery set hidden-fields
我一直在尝试使用jQuery在表单中设置隐藏字段的值,但没有成功.
以下是解释问题的示例代码.如果我将输入类型保持为"文本",它可以毫无困难地工作.但是,将输入类型更改为"隐藏",不起作用!
<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>
Run Code Online (Sandbox Code Playgroud)
我还尝试了以下解决方法,将输入类型设置为"text",然后使用"display:none"样式作为输入框.但是,这也失败了!似乎jQuery在设置隐藏或不可见的输入字段时遇到了一些麻烦.
有任何想法吗?有没有一个解决方法实际上有效?
And*_*y E 304
:text
对于类型值为的输入将失败hidden
.使用它也更有效:
$("#texens").val("tinkumaster");
Run Code Online (Sandbox Code Playgroud)
ID属性在网页上应该是唯一的,请确保它们可能会导致您遇到的任何问题,并且指定更复杂的选择器只会减慢速度并且看起来不那么整洁.
在例如http://jsbin.com/elovo/edit,使用您的样例代码中,http://jsbin.com/elovo/2/edit
Chu*_*ebs 60
如果您在设置隐藏字段的值时遇到问题,因为您正在向其传递ID,那么这就是解决方案:
而不$("#hidden_field_id").val(id)
只是做$("input[id=hidden_field_id]").val(id)
.不确定区别是什么,但它确实有效.
zam*_*ber 24
最后,我找到了一个解决方案,它很简单:
document.getElementById("texens").value = "tinkumaster";
Run Code Online (Sandbox Code Playgroud)
奇迹般有效.不知道为什么jQuery不会回到这一点.
小智 18
我有同样的问题.奇怪的是谷歌铬和可能其他人(不确定)不喜欢
$("#thing").val(0);
input type="hidden" id="thing" name="thing" value="1" />
Run Code Online (Sandbox Code Playgroud)
(没变)
$("#thing").val("0");
input type="hidden" id="thing" name="thing" value="1" />
Run Code Online (Sandbox Code Playgroud)
(没变)
但这很有效!!!!
$("#thing").val("no");
input type="hidden" id="thing" name="thing" value="no" />
Run Code Online (Sandbox Code Playgroud)
变化!!
$("#thing").val("yes");
input type="hidden" id="thing" name="thing" value="yes" />
Run Code Online (Sandbox Code Playgroud)
变化!!
必须是一个"字符串的东西"
小智 10
$('input[name=hidden_field_name]').val('newVal');
Run Code Online (Sandbox Code Playgroud)
为我工作,当时都没有
$('input[id=hidden_field_id]').val('newVal');
Run Code Online (Sandbox Code Playgroud)
也不
$('#hidden_field_id').val('newVal');
Run Code Online (Sandbox Code Playgroud)
没有.
.val对我没有用,因为我抓住了值属性服务器端,并且值并不总是更新.所以我用过:
var counter = 0;
$('a.myClickableLink').click(function(event){
event.preventDefault();
counter++;
...
$('#myInput').attr('value', counter);
}
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助某人.
小智 7
实际上,这是一个持续存在的问题.虽然Andy对下载的源代码是正确的,但.val(...)和.attr('value',...)似乎并没有真正修改html.我认为这是一个javascript问题而不是 jquery问题.如果你曾经使用过firebug,那么你会遇到同样的问题.虽然看起来如果您提交带有修改后的值的表单,它将会通过,但html不会改变.我遇到了这个问题,尝试创建修改后的表单的打印预览(执行[form] .html())它复制一切正常,包括所有更改,除了价值变化.因此,我的模态打印预览有点无用......我的解决方法可能必须是"构建"包含已添加的值的隐藏表单,或者单独生成预览并使用户进行的每个修改也修改预览.两者都不是最理想的,但除非有人弄清楚为什么价值设定行为不会改变html(在我假设的DOM中),它必须这样做.
我遇到了同样的问题,我发现出了什么问题。我将 HTML 定义为
<form action="url" method="post">
<input type="hidden" id="email" />
<form>
<script>
function onsomeevent()
{
$("#email").val("a@a.com");
}
</script>
Run Code Online (Sandbox Code Playgroud)
读取服务器上的表单值总是导致电子邮件为空。在挠头(和大量搜索)之后,我意识到错误是没有正确定义表单/输入。在修改输入时(如下所示),它就像一个魅力
<input type="hidden" id="email" name="email" />
Run Code Online (Sandbox Code Playgroud)
如果其他人有同样的问题,请添加到此线程。
归档时间: |
|
查看次数: |
588766 次 |
最近记录: |