2013-06-26 83 views
1

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

这里是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; 

}; 
}); 

感谢您的帮助。

+8

这些函数使jQuery原型绝对没有意义。你为什么要创建'onload'? – Bergi

+0

其逻辑正确,工作正常。 http://jsfiddle.net/Dgpcx/1/ – Satpal

+0

什么代码不会返回任何更多?你在控制台中看到任何异常吗? – Bergi

回答

0

由于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/测试这种方法。尝试从电脑中选择不同的文件,看看它是如何工作的。 PS:我的猜测是,如果你接受.docx和.xlsx,你也应该接受.doc和.xls;在这种情况下,正则表达式将是/(?:jpe?g|docx?|pdf|xlsx?)$/

+0

是你的方法作品和感谢它的问题:)固定 – ickarsim