jQuery .val()vs .attr(“value”)我原以为这两个是相同的,但它们似乎不是。我一直习惯使用$obj.attr("value")表单字段,但在我正在构建的页面上,$obj.attr("value")不会返回我在字段中输入的文本。但是,$obj.val()确实如此。在不同的页面我已经建立,双方$obj.attr("value")并$obj.val()返回在表单字段中输入的文本。什么可以解释$obj.attr("value")在一个案例中按预期工作但在另一个案例中没有?使用jQuery设置和检索表单字段值的正确方法是什么?
3 回答
婷婷同学_
TA贡献1844条经验 获得超8个赞
对象属性和对象属性之间存在很大差异
有关一些差异,请参阅此问题(及其答案):。prop()vs .attr()
要点是.attr(...)
只在开始时获取对象值(创建html时)。val()
获取对象的属性值可以多次更改。
森林海
TA贡献2011条经验 获得超2个赞
仅供将来参考,我提供了一个很好的例子,可以帮助我们解决疑问:
请尝试以下方法。在这个例子中,我将创建一个文件选择器,可用于选择文件,然后我将尝试检索我选择的文件的名称: HTML代码如下:
<html> <body> <form action="#" method="post"> <input id ="myfile" type="file"/> </form> <script type="text/javascript" src="jquery.js"> </script> <script type="text/javascript" src="code.js"> </script> </body></html>
code.js文件包含以下jQuery代码。尝试逐个使用两个jQuery代码片段并查看输出。
带attr的jQuery代码('value'):
$('#myfile').change(function(){ alert($(this).attr('value')); $('#mybutton').removeAttr('disabled');});
带val()的jQuery代码:
$('#myfile').change(function(){ alert($(this).val()); $('#mybutton').removeAttr('disabled');});
输出:
带有attr('value')的jQuery代码的输出将是'undefined'。带有val()的jQuery代码输出将是您选择的文件名。
说明:现在您可以轻松理解最佳答案想要表达的内容。带有attr('value')的jQuery代码的输出将是'undefined',因为最初没有选择文件,所以值是未定义的。最好使用val(),因为它获取当前值。
为了了解返回未定义值的原因,请在HTML中尝试此代码,您将看到attr。('value')始终返回'test',因为该值为'test',之前未定义。
<input id ="myfile" type="file" value='test'/>
我希望它对你有用。
- 3 回答
- 0 关注
- 407 浏览
添加回答
举报
0/150
提交
取消