jQuery未返回任何值

jQuery not returning any value

本文关键字:任何值 返回 jQuery      更新时间:2023-09-26

我有一些代码可以检查表单的内容是否有效。如果我注释掉checkFile函数,checkEmpty、checkNumeric和checkEmail都可以正常工作。但如果我包含checkFile,它会破坏代码,导致函数不返回任何值。

这是checkFile函数。它应该检查文件扩展名。

$.fn.checkFile = function(fileValue) {
    //var fileName = contactform.cv.value;
    var extension = fileValue.substring(fileValue.lastIndexOf('.') + 1);
    alert(extension);
    if(extension === 'jpg' || extension === 'jpeg' ||extension === 'docx' ||extension === 'pdf' ||extension === 'xlsx'){
        alert("correct extension");
        return true;
    }else{
        alert("incorrect extension");
        return false;
    }
};

此外,该功能应该可以正常工作。我分别试了试,看看它是否能正确地得到扩展。

这是整个代码,以防需要

$(window).load(function() { 

// validations
$.fn.checkEmpty = function(emp) {
    if(emp === ""){
        alert("field is empty");
        return false;
    }else{
        alert("not empty");
        return true;
    }
};
$.fn.checkEmail = function(email) {
var regex = new RegExp(/^(("['w-'s]+")|(['w-]+(?:'.['w-]+)*)|("['w-'s]+")(['w-]+(?:'.['w-]+)*))(@((?:['w-]+'.)*'w['w-]{0,66})'.([a-z]{2,6}(?:'.[a-z]{2})?)$)|(@'[?((25[0-5]'.|2[0-4][0-9]'.|1[0-9]{2}'.|[0-9]{1,2}'.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})'.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})']?$)/i);
    if(regex.test(email)){
        alert("mail is valid");
        return true;
    } else {
        alert("mail is invalid");
        return false;
    }
};
$.fn.checkNumeric = function(value) {
    // 10 digits for phone number ?
    /*
    if (value.length !== 10 || value === "" || !$.isNumeric(value)) {
        alert("not a numerical value");
    } else {
        alert("numerical value");
    }*/
    var regex =new RegExp(/^(?:'d*','d*|'d+)$/);
    if(regex.test(value) && value!==""){
        alert("numerical value");
        return true;
    } else {
        alert("not numerical value");
        return false;
    }
};
$.fn.checkFile = function(fileValue) {
    //var fileName = contactform.cv.value;
    var extension = fileValue.substring(fileValue.lastIndexOf('.') + 1);
    alert(extension);
    if(extension === 'jpg' || extension === 'jpeg' ||extension === 'docx' ||extension === 'pdf' ||extension === 'xlsx'){
        alert("correct extension");
        return true;
    }else{
        alert("incorrect extension");
        return false;
    }
};
$.fn.checkField = function() {
    var empty = "empty";
    var numeric = "numeric";
    var email = "email";
    var file = "file";
    var flag=0;
    var retval;
    $("input:text").each(function() {
        var required = $(this).data("reqs");
        if(required.toLowerCase().indexOf(empty) !== -1){
            retval = $(this).checkEmpty($(this).val());
            if(retval === false){
                flag++;
                $(this).after('<span style="color:red">*</span>');
            }
        }
        if (required.toLowerCase().indexOf(numeric) !== -1){
            retval = $(this).checkNumeric($(this).val());
            if(retval === false){
                flag++;
                $(this).after('<span style="color:red">*</span>');
            }
        }
        if(required.toLowerCase().indexOf(email) !== -1){
            retval = $(this).checkEmail($(this).val());
            if(retval === false){
                flag++;
                $(this).after('<span style="color:red">*</span>');
            }
        }
    });
    $("input:file").each(function() {
        if(required.toLowerCase().indexOf(file) !== -1){
            retval = $(this).checkFile($(this).val());
            if(retval === false){
                flag++;
                $(this).after('<span style="color:red">*</span>');
            }
        }
    });
    alert(flag);
    return (flag > 0) ? false : true;
};
});

谢谢你的帮助。

正如Bergi所指出的,如果将文件名作为参数传递给原型,那么将函数添加到原型中没有多大意义。。。

然而,如果您在方法中实际使用this,那么将其添加到原型中可能是一个好主意

$.fn.checkFile = function(){
    var filename = $(this).val();
    if (/(?:jpe?g|docx|pdf|xlsx)$/.test(filename)){
        return true;
    }else{
        return false;
    }
};

您可以在上测试此方法http://jsfiddle.net/NVvzN/.请尝试从您的计算机中选择不同的文件,看看它是如何工作的。


附言:我的猜测是,如果你接受.docx和.xlsx,你也应该接受.doc和.xls;在这种情况下,正则表达式将是/(?:jpe?g|docx?|pdf|xlsx?)$/