PS:这不是答案,而只是上述答案的补充。
仅供以后参考,我列举了一个很好的例子,可以帮助我们清除疑问:
请尝试以下方法。在此示例中,我将创建一个文件选择器,该选择器可用于选择文件,然后我将尝试检索所选文件的名称:
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('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'/>
希望对您有用。