2013-05-09 33 views
0

我的代碼當用戶在表單中犯了一個錯誤時,Jquery代碼向表中添加了文本。然而,文本一旦完成檢查就消失,因此僅出現短暫的瞬間。獲取jquery代碼留在表單完成提交後

這裏是用戶名驗證:

function validateUserName() 
{ 
    var u = document.forms["NewUser"]["user"].value 
    var uLength = u.length; 
    var illegalChars = /\W/; // allow letters, numbers, and underscores 
    if (u == null || u == "") 
    { 
     $("#ErrorUser").text("You Left the Username field Emptyyy"); 
     return false; 
    } 
    else if (uLength <4 || uLength > 11) 
    { 
     $("#ErrorUser").text("The Username must be between 4 and 11 characters"); 
     return false; 
    } 
    else if (illegalChars.test(u)) 
    { 
     $("#ErrorUser").text("The Username contains illegal charectors men!"); 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 
+0

這裏沒有代碼讓文本消失。發佈剩餘的代碼。 – 2013-05-09 11:24:10

+0

您需要防止默認提交表格 – adeneo 2013-05-09 11:24:12

+0

這項工作是否會在第一行末尾沒有終結符';'。 – 2013-05-09 11:24:55

回答

0

爲了防止表單提交,你需要防止的默認操作。給這樣:

function validateUserName(e) 
{ 
    e.preventDefault(); 
    var u = document.forms["NewUser"]["user"].value; 
    var uLength = u.length; 
    var illegalChars = /\W/; // allow letters, numbers, and underscores 
    if (u == null || u == "") 
    { 
     $("#ErrorUser").text("You Left the Username field Emptyyy"); 
     return false; 
    } 
    else if (uLength <4 || uLength > 11) 
    { 
     $("#ErrorUser").text("The Username must be between 4 and 11 characters"); 
     return false; 
    } 
    else if (illegalChars.test(u)) 
    { 
     $("#ErrorUser").text("The Username contains illegal charectors men!"); 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

而你需要調用的事件是這樣的:基於評論:

$("form").onsubmit(validateUserName); 

更新。

更改<form>標籤的標記是這樣的:

<form name="NewUser" id="myform"> 

而在JavaScript中,用這樣的方式:

$("form").onsubmit(function(e){ 
    e.preventDefault(); 
    var u = document.forms["NewUser"]["user"].value; 
    var uLength = u.length; 
    var illegalChars = /\W/; // allow letters, numbers, and underscores 
    if (u == null || u == "") 
    { 
     $("#ErrorUser").text("You Left the Username field Emptyyy"); 
     return false; 
    } 
    else if (uLength <4 || uLength > 11) 
    { 
     $("#ErrorUser").text("The Username must be between 4 and 11 characters"); 
     return false; 
    } 
    else if (illegalChars.test(u)) 
    { 
     $("#ErrorUser").text("The Username contains illegal charectors men!"); 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
}); 
+0

沒有'e'傳遞給那個 – 2013-05-09 11:26:13

+0

您的功能需要閱讀事件 – MMM 2013-05-09 11:26:15

+0

@MMM和Steven,完成。 :)沒有注意到。抱歉。 – 2013-05-09 11:27:10

-1

如由@adeneo評論已經提到的,你需要防止你的提交表單。

<input type="submit" value="Submit" onclick="if(!validateUserName()) return false;"/> 

這會阻止您的表單在表單發生錯誤時提交數據。你已經從你的Javascript函數返回true/false,只是利用這些。

+0

這將永遠不會工作。你只是(錯誤地)複製其他人的幫助 – 2013-05-09 11:29:20

+0

@StevenMoseley謹慎開導爲什麼這不起作用?另外,你認爲我從哪裏複製了代碼? – Nikhil 2013-05-09 11:31:25

+0

在編輯它之前,它會說'if(validateUserName())'。無論哪種方式,您只需複製以前在評論中提供的答案。你不值得信任。 – 2013-05-09 11:35:28