2013-06-26 114 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