jQuery更改所有输入字段的值属性

4

这不适用于表单字段。

假设我在html中有以下内容:

<input id="something" value="myvalue">
<input id="somethingelse" value="myvalue">

我有一段 JavaScript 代码可以做到这点:

something.value="ME";
somethingelse.value="TOO";

我希望你能够操作DOM,使得当我们检查“something”元素时,它能够反映出以下内容:

<input id="something" value="ME">

如果我在jquery中显式地这样做,它就能工作:

$("#something").attr("value",something.value.toString());

但是我需要更通用的东西 - 我需要改变每个输入项,使其表现出这样的行为。

所以我尝试了:

$("input").each(function () {
    $(this).attr("value", this.value.toString());
})

但它根本没有改变。它只是保持不变。
所以我尝试了这个:
$("input").each(function () {
$(this).attr("value", "NeverA");
})

并且它也没有改变它。

但我试过了。

$("input").each(function () {
    alert(this.value.toString());
})

它正在警报每个值 - 所以选择器是正确的。

我做错了什么?


1
FYI,对字符串执行toString()是无用的。 - epascarello
1
您需要更深入地描述您的问题。目前不太清楚您想要做什么。 - royhowie
输入字段的类型是什么?应该是文本,如果你使用了“数字”,那么你将看不到任何内容。 - lexeek
您的代码在此fiddle中可以直接运行:http://jsfiddle.net/7bkcc9Lr/ 如果我检查输入,我可以看到它们的值。 - Rick Hitchcock
Rick - 我不知道如何将你的答案标记为正确,甚至不确定是否需要这样做,但这是我的代码演示,并且确实有效。 - user2709214
Rick,我无法将你的答案标记为正确,但这是我的fiddle链接,当我将其粘贴到你的fiddle中时,它可以正常工作。我不知道我错在哪里,但我怀疑是括号放错了位置或其他什么问题。http://jsfiddle.net/t2nrkeyt/ 在之前的测试中,似乎需要使用toString作为Jquery的参数才能使其正常工作,但我将其删除后,事情似乎按照我所期望的方式运行。所有这一切的原因是我有一个Ajax生成的网站,我希望它被搜索引擎索引。因此,我正在制作一个HTML快照,并希望值出现。 - user2709214
5个回答

3
您可以使用一个类来实现这一点:
$(function(){
$("#Goo").click(function(){
    $(".test").each(function() {
        $(this).val("otherValue");
    });
});
});

工作的示例代码: http://jsfiddle.net/xtzqggot/


1

在代码中,Rick给出了正确的答案 - 虽然我的问题看起来是正确的,但我在jsfiddle中的代码必须有某种未报告的错误,因为它根本不起作用。将Rick的fiddle中的代码粘贴进去就可以了。这是我的fiddle,包含答案和几种其他类型的输入字段。

答案:

<input id="something" value="myvalue">
<input id="somethingelse" value="SE">
<input id="ANum" type="number" value=99>
<input id="button" type="button" value="OK">

<script>
  something.value = "NEVER";
  button.value = "Not OK";
  ANum.value = 9342;

  $("input").each(function () {
    $(this).attr("value", this.value);
  })
</script>

这是用于此的Fiddle:

http://jsfiddle.net/t2nrkeyt/

1
简单的 $("input").attr("value", "NewString") 对我很有效。你可以传递一个函数作为第二个参数,根据你的需要修改值。

查看 Fiddle


@epascarello 显然不是。感谢提醒。 - Ozan
同样不起作用,使用 $('selector').val() 返回旧值。 - Pouria Moosavi

0

可以更简单。只需这样做:

<div id="parentDivID">
    <input id="something" value="myvalue">
    <input id="somethingelse" value="SE">
    <input id="ANum" type="number" value=99>
    <input id="button" type="button" value="OK">
</div>

<script> 
    $("#parentDivID").find('input').val(''); 
</script>

0

你可以使用选择器访问所有的后代元素

<div id="parentDivID">
    <input id="something" value="myvalue">
    <input id="somethingelse" value="SE">
    <input id="ANum" type="number" value=99>
    <input id="button" type="button" value="OK">
</div>

<script> 
    $("#parentDivID input").val(''); 
</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接