jQuery .val()vs .attr(“value”)

jQuery .val()vs .attr(“value”)

我原以为这两个是相同的,但它们似乎不是。我一直习惯使用$obj.attr("value")表单字段,但在我正在构建的页面上,$obj.attr("value")不会返回我在字段中输入的文本。但是,$obj.val()确实如此。

在不同的页面我已经建立,双方$obj.attr("value")$obj.val()返回在表单字段中输入的文本。

什么可以解释$obj.attr("value")在一个案例中按预期工作但在另一个案例中没有?

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


函数式编程
浏览 408回答 3
3回答

婷婷同学_

对象属性和对象属性之间存在很大差异有关一些差异,请参阅此问题(及其答案):。prop()vs .attr()要点是.attr(...)只在开始时获取对象值(创建html时)。val()获取对象的属性值可以多次更改。

RISEBY

从jQuery 1.6开始,attr()将返回一个属性的原始值(标记本身中的那个)。你需要使用prop()来获取当前值:var&nbsp;currentValue&nbsp;=&nbsp;$obj.prop("value");但是,使用val()并不总是相同的。例如,<select>元素的值实际上是其所选选项的值。val()考虑到这一点,但prop()没有。因此,val()优选。

森林海

仅供将来参考,我提供了一个很好的例子,可以帮助我们解决疑问:请尝试以下方法。在这个例子中,我将创建一个文件选择器,可用于选择文件,然后我将尝试检索我选择的文件的名称:&nbsp;HTML代码如下:<html> &nbsp;&nbsp;&nbsp;&nbsp;<body> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<form&nbsp;action="#"&nbsp;method="post"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input&nbsp;id&nbsp;="myfile"&nbsp;type="file"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</form> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<script&nbsp;type="text/javascript"&nbsp;src="jquery.js">&nbsp;</script> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<script&nbsp;type="text/javascript"&nbsp;src="code.js">&nbsp;</script> &nbsp;&nbsp;&nbsp;&nbsp;</body></html>code.js文件包含以下jQuery代码。尝试逐个使用两个jQuery代码片段并查看输出。带attr的jQuery代码('value'):$('#myfile').change(function(){ &nbsp;&nbsp;&nbsp;&nbsp;alert($(this).attr('value')); &nbsp;&nbsp;&nbsp;&nbsp;$('#mybutton').removeAttr('disabled');});带val()的jQuery代码:$('#myfile').change(function(){ &nbsp;&nbsp;&nbsp;&nbsp;alert($(this).val()); &nbsp;&nbsp;&nbsp;&nbsp;$('#mybutton').removeAttr('disabled');});输出:带有attr('value')的jQuery代码的输出将是'undefined'。带有val()的jQuery代码输出将是您选择的文件名。说明:现在您可以轻松理解最佳答案想要表达的内容。带有attr('value')的jQuery代码的输出将是'undefined',因为最初没有选择文件,所以值是未定义的。最好使用val(),因为它获取当前值。为了了解返回未定义值的原因,请在HTML中尝试此代码,您将看到attr。('value')始终返回'test',因为该值为'test',之前未定义。<input&nbsp;id&nbsp;="myfile"&nbsp;type="file"&nbsp;value='test'/>我希望它对你有用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JQuery