我觉得标题很清楚
答案 0 :(得分:82)
.val()
以有用的方式处理所有输入类型元素,包括<select>
...即使在<select multiple>
,复选框和单选按钮的情况下({{3}获取或设置所选值的数组而不仅仅是字符串)。
所以基本上它们用于不同的目的,即使.val()
在某些情况下表现相同,例如文本框。首选方法是.attr('value')
,以便在任何地方获得一致的行为。
只是为了踢,这里有一个鲜为人知的复选框示例,使.val()
得心应手:
<input name="mytest" type="checkbox" value="1">
<input name="mytest" type="checkbox" value="2">
<input name="mytest" type="checkbox" value="3">
<input name="mytest" type="checkbox" value="4">
你可以这样做:
$("input[name='mytest']").val([1, 2, 3]);
....将检查前3个方框。 .val()
答案 1 :(得分:9)
此外.attr('value')返回编辑输入字段之前的值。 并且.val()返回当前值。
答案 2 :(得分:1)
添加到actis的答案......
另外.attr('value')返回编辑输入之前的值 领域。并且.val()返回当前值。
使用文本输入字段时,.attr()和.val()的setter方法的工作方式不同。
.val('newval')
将设置用户在页面上看到的值,并更新后续.val()方法调用返回的值。它不会设置元素的value =属性。
OTOH
.attr('value','newval')
将在元素上设置value =属性。如果用户没有输入并且没有调用.val(newval),那么这样做也会直观地更新控件并更新.val()返回的值。
您可以使用以下jsfiddle进一步调查:
祝你好运。