2013-04-24 122 views
1

以下驗證會正確驗證代碼並提供警報..但是,一旦您關閉了警報並想繼續操作,則無法執行,因爲它會自動刷新,我不希望頁面刷新只是顯示警報,並讓用戶編輯自己的信息:自定義JS驗證無法正常工作

http://jsfiddle.net/PKLQn/114/

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:

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

function Checksize() { 
    var iSize = ($("#flUpload")[0].files[0].size/1024); 
    alert(iSize); 
     if(Checkfiles()==true) { 
      alert("Checkfiles function works properly!"); 
      if (iSize < 2097152.00) { 
       alert("It's smaller than 2 megabytes, proceed.."); 
       return true; 
      } 
      else{ 
       alert("It's bigger than 2mb, submit an smaller file!"); 
       return false; 
      } 
     } else { alert("Upload GIF, PNG, JPG Images only"); return false; } 
} //Checksize 

function Checkfields() { 
    var error=""; 
    // Validate Email 
    var email = $("#email").val(); 
    if (/(.+)@(.+){2,}\.(.+){2,}/.test(email)) { } else { error += "- Please enter a valid email address.\n"; } 
    // Validate Title 
    var title = $("#title").val(); 
    if (title=="" || title==null) { error += "- Please enter a valid title for your advertisement.\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."; } 

    if(error!=""){alert(error); return false;} else {return true;} 
}// Checkfields 

function newfuncion() { 
     var fields = Checkfields(); 
     var size = Checksize(); 
     var files = Checkfiles(); 
     if(fields==true && size==true && files==true) { 
      alert("Code works, now proceed to .php page!"); 
      return true; 
     } else { 
      alert("Something's wrong, check your code!"); 
      return false; 
     } 
} // Use all functions 

難怪有什麼不對?提前致謝。

+1

你是什麼意思是「要繼續」嗎?您是否期望服務器執行重定向?如果沒有,那麼它會正確刷新頁面。 – grasp 2013-04-24 22:06:40

+0

不要使用空的if塊,而是反轉條件。不要比較布爾值與'true',只是*使用*他們 – Bergi 2013-04-24 22:08:04

+0

...我不確定你的意思是「如果存在警報」。你的'if()'語句對這個條件的兩個結果都有警報,所以你不管發生什麼都會收到警報。如果你總是想阻止提交,那麼將'return true;'改爲'return false;' – grasp 2013-04-24 22:08:43

回答

3

有沒有在你的Javascript錯誤:

var iSize = ($("#flUpload")[0].files[0].size/1024); 

如果沒有文件,你會在訪問大小屬性得到一個錯誤。

首先,您需要做的檢查:

var iSize; 
if ($("#flUpload")[0].files[0]){ 
    iSize = ($("#flUpload")[0].files[0].size/1024); 
} 
+0

你是天使嗎?非常感謝,解決了問題。真的很感激它! – 2013-04-24 22:13:51

+0

沒問題。樂於幫助。請記住接受答案/對它投票,如果它對你有幫助。 – Kenneth 2013-04-24 22:14:52