Проверка JQuery работает индивидуально, но не вместе - PullRequest
2 голосов
/ 02 августа 2011

* EDIT **
я попробовал это с && вместо || и теперь он не возвращается как ложный для любого файла. Я думаю, что это должно быть && хотя.

У меня есть пользовательская функция проверки, которую я использую, чтобы проверить, является ли файл файлом 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 и извлечу часть «|| xlsx! = '.Xlsx'» в операторе if, это сработает, и наоборот, но если я оставлю их там, это не сработает. Я даже пытался сделать их 2 отдельными функциями, но это тоже не работает.

Есть идеи, почему мне не позволяют это сделать?

Ответы [ 4 ]

1 голос
/ 02 августа 2011

Используйте вместо этого регулярное выражение!

$.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>"
);
1 голос
/ 02 августа 2011

Я думаю, что вы ищете &&, а не ||.если расширение отличается от .xls и также отличается от .xlsx, тогда isValid имеет значение false.

0 голосов
/ 03 сентября 2014

Я столкнулся с той же проблемой при проверке файлов типа xls и xlsx.Я попробовал этот самый простой и простой способ ..

<input id="fileSelect" type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" />

Допустимые типы принятия:

Для CSV файлов (.csv) используйте:

<input type="file" accept=".csv" />

Для Файлы Excel 2003-2007 (.xls), используйте:

<input type="file" accept="application/vnd.ms-excel" />

Для Файлы Excel 2010 (.xlsx), используйте:

<input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />

Для текстовых файлов (.txt) используйте:

<input type="file" accept="text/plain" />

Для файлов изображений (.png / .jpg / и т. Д.),используйте:

<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

0 голосов
/ 02 августа 2011

У вас есть взаимоисключающие условия, но вы пытаетесь проверить их оба одновременно.Если последними 5 символами является «.xlsx», то последними 4 никогда не будет «.xls», и наоборот.

Проверьте одно условие, а если оно не пройдет, проверьте другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...