jQuery .val()与.attr("value")的区别

83

我曾经认为这两者是相同的,但似乎不是。通常我使用 $obj.attr("value") 来处理表单字段,但在我当前正在构建的页面上,$obj.attr("value") 不返回我输入的文本。然而,$obj.val() 可以。

在另一个我构建的页面上,$obj.attr("value")$obj.val() 都会返回在表单字段中输入的文本。

是什么原因导致 $obj.attr("value") 在某些情况下按预期工作,而在另一些情况下不工作?

使用jQuery设置和检索表单字段值的正确方式是什么?


3
jQuery .val() 和 .attr() 的区别是:.val() 用于获取或设置表单元素的值,而 .attr() 用于获取或设置元素的属性值。 - Adriano
1
真正的原因是val()只能获取特定类型标签的值,例如您可以使用val()获取输入框的值,但如果您将value属性添加到a标签或div标签中,则无法使用val()。您需要使用.attr("value") - Seraf
14个回答

-1

jquery - 获取输入文本框中的值

<script type="text/javascript"> 

jQuery(document).ready(function(){

var classValues = jQuery(".cart tr").find("td.product-name").text();
classValues = classValues.replace(/[_\W]+/g, " ")

jQuery('input[name=your-p-name]').val(classValues);

//alert(classValues);

});

</script>

-1
如果您在属性和标签上得到了相同的值,但在HTML中仍然看到它们不同,请尝试使用以下方法获取HTML标签:
$('#inputID').context.defaultValue;

-3
attr('value') 中,你明确地表示你正在寻找名为 value 的属性的值。最好使用 val(),因为这是 jQuery 提供的用于从表单元素中提取值的开箱即用功能。

-5

我一直使用 .val(),说实话,我甚至不知道你可以使用 .attr("value") 来获取值。我也使用 .val() 设置表单字段的值,例如:$('#myfield').val('新值');


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