JQuery验证单独工作,但不能一起工作
*编辑**JQuery验证单独工作,但不能一起工作,jquery,validation,jquery-validate,Jquery,Validation,Jquery Validate,*编辑** 我用&&而不是| |进行了尝试,现在它对于任何文件都不会返回为false。我确实认为需要&&尽管如此 我有一个自定义验证函数,用于检查文件是否为excel文件。当我测试是最后4个字符是.xls或最后5个字符是.xlsx时,它工作,但当我检查这两个字符时,它不工作。你知道为什么它不让我这么做吗 $.validator.addMethod("xlsxOrxls", function(value, element) { var isValid = true; var xls
我用&&而不是| |进行了尝试,现在它对于任何文件都不会返回为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>"
);
$.validator.addMethod(“xlsxOrxls”,函数(值,元素){
var isValid=true;
var xlsx=value.substr(value.length-5);
var xls=value.substr(value.length-4);
如果(xls!='.xls'| | xlsx!='.xlsx')
isValid=false;
返回有效;
},“
不是有效的文件格式。”
);
如果我注释掉var xlsx行并去掉If语句中的“| | xlsx!='.xlsx'”部分,它会工作,反之亦然,但如果我把它们都放在那里,它就不会工作。我甚至试着把它们分成两个独立的功能,但这也不起作用
你知道为什么不让我这么做吗?我想你是在找&&,而不是| |。如果扩展名不同于.xls,并且它也不同于.xlsx,则isValid为false。请改用正则表达式
$.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>"
);
$.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”,
函数(值、元素){
返回值。匹配(/\.xlsx?$/);
},
“
不是有效的文件格式。”
);
或者,如果你真的想按自己的方式做:
$.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>"
);
$.validator.addMethod(
“xlsxOrxls”,
函数(值、元素){
var xlsx=value.substr(value.length-5);
var xls=value.substr(value.length-4);
返回xls=='.xls'| xlsx=='.xlsx';
},
“
不是有效的文件格式。”
);
您有相互排斥的条件,但您试图同时检查这两个条件。如果最后5个字符是“.xlsx”,那么最后4个字符将永远不会是“.xls”,反之亦然
检查一个条件,如果不通过,检查另一个。我在
xls
和xlsx
类型文件上面临相同的验证问题。我试过这个最简单的方法
<input id="fileSelect" type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" />
有效的接受类型:
对于CSV文件(.CSV),请使用:
对于2003-2007年Excel文件(.xls),请使用:
对于Excel文件2010(.xlsx),请使用:
对于文本文件(.txt),请使用:
对于图像文件(.png/.jpg/etc),请使用:
对于HTML文件(.htm、.HTML),请使用:
对于视频文件(.avi、.mpg、.mpeg、.mp4),请使用:
对于音频文件(.mp3、.wav等),请使用:
对于PDF文件,请使用:
<input type="file" accept=".pdf" />
引用Dom的答案是的,我尝试了&&之后,现在它没有显示任何文件类型的错误消息。我对上面的帖子进行了编辑。谢谢,我意识到“或”不是正确的方式。在我发布了它之后,我使用了第二种方式,它按照我需要的方式工作。“我的方式”对regex有好处吗?它更短,更容易阅读。您不必记住substr从何处开始计数等。更可读的形式是
value.match(/\(xls | xslx | more | file | extensions | here)$/)代码>。那就很难用你的方式写了。
<input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
<input type="file" accept="text/plain" />
<input type="file" accept="image/*" />
<input type="file" accept="text/html" />
<input type="file" accept="video/*" />
<input type="file" accept="audio/*" />
<input type="file" accept=".pdf" />