JQuery验证单独工作但不能一起工作

时间:2011-08-02 18:14:37

标签: jquery validation jquery-validate

*的 修改 **
我和&&而不是||现在它对任何文件都不会返回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'”部分它可以正常工作,反之亦然,但是如果我把它们都留在那里它就行不通。我甚至试过让它们成为两个独立的功能,但那也不起作用。

知道为什么不让我这样做?

4 个答案:

答案 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)

我在xlsxlsx类型文件的验证方面遇到了同样的问题。我试过这个最容易的&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的答案