*的 修改 **
我和&&而不是||现在它对任何文件都不会返回false。我认为它需要和&&虽然。
我有一个自定义验证功能,我用它来检查文件是否是excel文件。当我测试的是最后4个字符是.xls或者最后5个字符是.xlsx它可以工作,但是当我检查它们时它没有。知道为什么它不会让我这样做吗?
$.validator.addMethod("xlsxOrxls", function(value, element) {
var isValid = true;
var xlsx = value.substr(value.length - 5);
var xls = value.substr(value.length - 4);
if (xls != '.xls' || xlsx != '.xlsx')
isValid = false;
return isValid;
}, "<br/><label style='color:red'><b>Not a valid file format.</b></label>"
);
如果我注释掉var xlsx行并取出if语句中的“|| xlsx!='。xlsx'”部分它可以正常工作,反之亦然,但是如果我把它们都留在那里它就行不通。我甚至试过让它们成为两个独立的功能,但那也不起作用。
知道为什么不让我这样做?
答案 0 :(得分:1)
我认为您正在寻找&amp;&amp;,而不是||。如果扩展名与.xls不同,并且与.xlsx不同,则isValid为false。
答案 1 :(得分:1)
改用正则表达式!
$.validator.addMethod(
"xlsxOrxls",
function(value, element) {
return value.match(/\.xlsx?$/);
},
"<br/><label style='color:red'><b>Not a valid file format.</b></label>"
);
或者,如果你真的想按照自己的方式去做:
$.validator.addMethod(
"xlsxOrxls",
function(value, element) {
var xlsx = value.substr(value.length - 5);
var xls = value.substr(value.length - 4);
return xls == '.xls' || xlsx == '.xlsx';
},
"<br/><label style='color:red'><b>Not a valid file format.</b></label>"
);
答案 2 :(得分:0)
你有相互排斥的条件,但是你想要立刻检查它们。如果最后5个字符是“.xlsx”,那么最后4个字符将永远不会是“.xls”,反之亦然。
检查一个条件,如果没有通过,请检查另一个条件。
答案 3 :(得分:0)
我在xls
和xlsx
类型文件的验证方面遇到了同样的问题。我试过这个最容易的&amp;最简单的方式..
<input id="fileSelect" type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" />
对于 CSV 文件(.csv),请使用:
<input type="file" accept=".csv" />
对于 Excel Files 2003-2007 (。xls),请使用:
<input type="file" accept="application/vnd.ms-excel" />
对于 Excel Files 2010 (。xlsx),请使用:
<input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
对于文本文件(。txt),请使用:
<input type="file" accept="text/plain" />
对于图像文件(。png / .jpg / etc),请使用:
<input type="file" accept="image/*" />
对于 HTML文件(。htm,.html),请使用:
<input type="file" accept="text/html" />
对于视频文件(。avi,.mpg,.mpeg,.mp4),请使用:
<input type="file" accept="video/*" />
对于音频文件(。mp3,.wav等),请使用:
<input type="file" accept="audio/*" />
对于 PDF文件,请使用:
<input type="file" accept=".pdf" />
来自Dom的答案