我想标题已经很清楚了
.val() 对所有输入类型元素都有效,包括 <select>... 甚至在 <select multiple>、复选框和单选按钮(其中 .val()获取或设置选定值的 数组,而不仅仅是字符串)的情况下也是如此。
.val()
<select>
<select multiple>
所以基本上它们有不同的用途,即使 .attr('value')在某些情况下表现相同,比如文本框。首选的方法是 .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]);
... 这将勾选前三个框。 你可以在这里试试。
而且. attr (‘ value’)返回编辑输入字段之前的值。 Val ()返回当前值。
为了补充 Actis 的回答..。
而且. attr (‘ value’)返回编辑输入之前的值 和. val ()返回当前值。
在处理文本输入字段时,. attr ()和. val ()的 setter 方法的工作方式不同。
.val('newval')
将设置用户在页面上看到的值,并更新。Val ()方法调用。它不会设置元素的 value = 属性。
OTOH
.attr('value','newval')
将在元素上设置 value = 属性。如果用户尚未键入并且。Val (newval)没有被调用,那么这样做也将直观地更新控件并更新由。Val ().
您可以使用以下 jsfiddle 进一步调查:
Https://jsfiddle.net/jasonnet/vamlww2k/
祝你好运。