2013-04-28 27 views
0

下面的腳本正確地驗證代碼,並給出了僅適用於Chrome和Firefox而不是Internet Explorer中的提醒,任何想知道爲什麼?:JS:自定義JS驗證在互聯網不工作瀏覽器

http://jsfiddle.net/PKLQn/121/

HTML:

<form name="fff1" onsubmit="return newfuncion();"> 
    <input type="text" id="email" /> 
    <input type="text" id="title" /> 
    <input type="text" id="url" /><br><br> 
    <input type="file" id="flUpload" /><br/><br> 
    <input type="submit" value="CONTINUE" /> 
</form> 

的Javascript:

var error=""; 

function Checkfiles() { 
    var fup = document.getElementById('flUpload'); 
    var fileName = fup.value; 
    var ext = fileName.substring(fileName.lastIndexOf('.') + 1); 
    var chkext = ext.toLowerCase(); 
    //var mime = fup.type; 
    //if (mime=='image/png' || mime=='image/jpeg' || mime=='image/gif') { 
    if(chkext=="gif" || chkext=="jpg" || chkext=="jpeg" || chkext=="png") { 
     return true; 
    } else { return false; } 
} // Checkfiles 

function Checksize() { 
    var iSize; 
    if ($("#flUpload")[0].files[0]){ 
     iSize = ($("#flUpload")[0].files[0].size/1024); 
    } 
    if(Checkfiles()==true) { 
     if (iSize < 51200.00) { 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } else { error += "- Upload GIF, PNG, JPG images only, smaller than 50 KB."; return false; } 
} //Checksize 

function Checkfields() { 
    // Validate Email 
    var email = $("#email").val(); 
    if (/(.+)@(.+){2,}\.(.+){2,}/.test(email)) { } else { error += "- Please enter a valid email address (eg. http://youwebsite.com)\n"; } 
    // Validate Title 
    var title = $("#title").val(); 
    if (title=="" || title==null) { error += "- Please enter a valid title for your advertisement (Max. 60 chars.)\n"; }  
    // Validate URL 
    var url = $("#url").val(); 
    if (/^(http[s]?:\/\/){0,1}(www\.){0,1}[a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,5}[\.]{0,1}/.test(url)) { } else { error += "- Please enter a valid URL.\n"; } 
}// Checkfields 

function newfuncion() { 
     var fields = Checkfields(); 
     var size = Checksize(); 
     var files = Checkfiles(); 
     if(fields==true && size==true && files==true) { 
      return true; 
     } else { 
      if(error!=""){alert(error); error=""; return false;} else {return true;} 
      return false; 
     } 
} //Juntar todas las funciones 

的y想知道爲什麼我的代碼在Internet Explorer 8,9上無法正常工作?提前致謝!

+0

您是否在控制檯中發現任何錯誤? – nnnnnn 2013-04-28 21:31:06

+0

我真的不知道如何檢查,我測試了Internet Explorer 8,幾個小時後我絕望了,所以我決定放棄對IE8的支持,並更新到Internet Explorer 9 ..但有同樣的問題:( – 2013-04-28 21:33:15

+0

在IE9 [按F12](http://msdn.microsoft.com/en-au/library/ie/gg589530(v = vs.85).aspx)中打開開發工具(包括控制檯)。 – nnnnnn 2013-04-28 21:34:40

回答

2

。 。 IE 8/9不支持「多文件」上傳,因此<input type="file">.files屬性返回null。您嘗試訪問其第一個索引,就好像它返回了一個數組,給出錯誤"Unable to get property '0' of undefined or null reference。同樣值得注意的是,.size屬性在HTML5之前不可用,您的代碼也應該檢查該屬性。您只能在舊版瀏覽器中使用JavaScript檢查文件大小。

。 。由於您沒有使用多文件上傳(至少不是您的示例代碼),因此您可以使用input.value檢查是否存在要上傳的文件。嘗試更改.files[0].value並更改文件大小檢查的邏輯,並應該解決所有瀏覽器中的問題。

。 。 Amplexos。

+0

用戶將只上傳一個文件,而不是多個。或者我該如何修改該行以獲得該文件的大小 – 2013-04-28 22:02:20

+0

可悲的是,您無法在舊瀏覽器中獲取文件大小。您可以隨時在用戶發佈表單後在服務器端進行檢查。 如果在上傳之前檢查文件大小*是真正的要求,那麼您可以嘗試使用一些Flash上​​傳器。 – 2013-04-28 22:04:53

+0

謝謝你,快速提問。你知道我該如何定位該函數Checksize()只能用於除IE以外的所有瀏覽器? – 2013-04-28 22:13:18