注意:这不是一个答案,仅仅是对上面答案的一个补充。
为了以后参考,我提供了一个好的例子,可能有助于我们消除疑惑:
请尝试以下步骤。在这个例子中,我将创建一个文件选择器,可以用来选择一个文件,然后尝试检索所选文件的名称:
以下是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>
代码.js文件包含以下jQuery代码。尝试逐一使用这两个jQuery代码片段并查看输出结果。
使用attr('value')的jQuery代码:
$('#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'/>
我希望您对此有所帮助。
val()
只能获取特定类型标签的值,例如您可以使用val()
获取输入框的值,但如果您将value
属性添加到a
标签或div
标签中,则无法使用val()
。您需要使用.attr("value")
。 - Seraf