2014-01-28 31 views
-1

我正在使用javascript和ajax來驗證註冊表單,此時函數restrict(elem)和函數checkusername()似乎工作,ajax正在將checkusername變量傳遞給PHP和這個檢查,如果用戶名存在,並顯示一條消息給我,說採取或可用的用戶名,但沒有其他領域得到驗證,這是我的javascript爲什麼只有一些我的JavaScript函數工作

JavaScript驗證客戶方B4到PHP

function restrict(elem) { 
    var tf = _(elem); 
    var rx = new RegExp; 
    if (elem === "email") { 
     rx = /[' "]/gi; 
    } else if (elem === "username") { 
     rx = /[^a-z0-9]/gi; 
    } else if (elem === "mobileNumber") { 
     rx = /[0-9]/g; 
    } 
    tf.value = tf.value.replace(rx, ""); 
} 

function emptyElement(x) { 
    _(x).innerHTML = ""; 
} 

function checkusername() { 
    var u = _("username").value; 
    if (u !== "") { 
     _("unamestatus").innerHTML = 'checking ...'; 
     var ajax = ajaxObj("POST", "signup.php"); 
     ajax.onreadystatechange = function() { 
      if (ajaxReturn(ajax) === true) { 
       _("unamestatus").innerHTML = ajax.responseText; 
      } 
     }; 
     ajax.send("usernamecheck=" + u); 
    } 
} 

function signup() { 
    var u = _("username").value; 
    var e = _("email").value; 
    var m = _("mobileNumber").value; 
    var p1 = _("pass1").value; 
    var p2 = _("pass2").value; 
    var ci = _("city").value; 
    var pc = _("postcode").value; 
    var c = _("country").value; 
    var d = _("dateOfBirth").value; 
    var g = _("gender").value; 
    var status = _("status"); 
    if (u === "" || e === "" || p1 === "" || p2 === "" || c === "" || g === "" || m === "" || ci === "" || pc === "" || d === "") { 
     status.innerHTML = "Fill out required fields"; 
    } else if (p1 !== p2) { 
     status.innerHTML = "Your password fields do not match"; 
    } else if (m !== 11 && !IsNumeric(m)) { 
     status.innerHTML = "Please enter valid mobile number"; 
    } else if (d === "dd/mm/yyyy") { 
     status.innerHTML = "Please enter your date of birth"; 

    } else { 
     //ajax to send form data to php 
     //hides sign button 
     _("signupbtn").style.display = "none"; 
     status.innerHTML = 'please wait ...'; 
     //wait until php verifies data 
     var ajax = ajaxObj("POST", "signup.php"); 
     ajax.onreadystatechange = function() { 
      if (ajaxReturn(ajax) === true) { 
       //if sign not succesful unhide button 
       if (ajax.responseText !== "signup_success") { 
        status.innerHTML = ajax.responseText; 
        _("signupbtn").style.display = "block"; 
       } else { 
        window.scrollTo(0, 0); 
        _("signupform").innerHTML = "OK " + u + ", check your email inbox and junk mail box at <u>" + e + "</u> in a moment to complete the sign up process by activating your account. You will not be able to do anything on the site until you successfully activate your account."; 
       } 
      } 
     }; 
     ajax.send("u=" + u + "&e=" + e + "&p=" + p1 + "&c=" + c + "&g=" + g + "&ci" + ci + "&m" + m + "&pc" + pc + "&d" + d); 
    } 
} 

這裏是我的表格

<form name="signupform" id="signupform" onsubmit="return false;"> 
    <div>Username: </div> 
    <input id="username" type="text" onblur="checkusername()" onkeyup="restrict('username')" maxlength="16"> 
    <span id="unamestatus"></span> 
    <div>Email Address:</div> 
    <input id="email" type="email" onfocus="emptyElement('status')" onkeyup="restrict('email')" maxlength="88"> 
    <div>Create Password:</div> 
    <input id="pass1" type="password" onfocus="emptyElement('status')" maxlength="16"> 
    <div>Confirm Password:</div> 
    <input id="pass2" type="password" onfocus="emptyElement('status')" maxlength="16"> 
    <div>First name:</div> 
    <input id="firstName" type="text" /><br /> 
    <div>Last name:</div> 
    <input id="lastName" type="text" /><br /> 
    <div>Mobile number*:</div> 
    <input name="mobileNumber" onfocus="emptyElement('status')" onkeyup="restrict('mobileNumber')" maxlength="16"> 
    <div>Gender:</div> 
    <select id="gender" onfocus="emptyElement('status')"> 
     <option value=""></option> 
     <option value="Male">Male</option> 
     <option value="Female">Female</option> 
    </select> 
    <div>Country:</div> 
    <select id="country" onfocus="emptyElement('status')"> 
     <?php include_once("country_list.php"); ?> 
    </select> 
    <div>City:</div> 
    <input id="city" onfocus="emptyElement('status')"> 
    <div>Postcode:</div> 
    <input id="postcode" onfocus="emptyElement('status')"> 
    <div>Relationship Status*:</div> 
    <select id="relationshipStatus" > 
     <option value=""></option> 
     <option value="Single">Single</option> 
     <option value="Taken">Taken</option>    
       </select> 
    <div>Date of Birth*:</div> 
    <input id="dateOfBirth" type="date" onfocus="emptyElement('status')"> 
    <button id="signupbtn" onclick="signup()">Create Account</button> 
    <span id="status"></span> 
    </form> 
+0

謝謝@Pointy。 –

+0

[在發佈之前清理代碼以便人們可以閱讀它是一個好主意。](http://jsbeautifier.org) – Pointy

+0

對不起,我想在用戶調用signup()函數時嘗試提交表單,這將檢查是否在signup()函數中提到的字段是空的或pass1匹配pass2等 – JWayne93

回答

1

您的驗證正則表達式不會做你想要什麼:

function restrict(elem) { 
    var tf = _(elem); 
    var rx = new RegExp; 
    if (elem === "email") { 
     rx = /[' "]/gi; 
    } else if (elem === "username") { 
     rx = /[^a-z0-9]/gi; 
    } else if (elem === "mobileNumber") { 
     rx = /[0-9]/g; 
    } 
    tf.value = tf.value.replace(rx, ""); 
} 

你的表情都設置這樣,如果在字段值的任何單個字符的字符範圍相匹配,他們會通過驗證。您可以規定整個字符串由特定範圍內的字符組成,如下所示:

rx = /^[a-z0-9]*$/; 
+0

* $是什麼意思,我認爲如果你把/ g放在數組之後,這使得它成爲全局的並且檢查它對陣場上的每個角色? – JWayne93

+0

@ JWayne93不,這不是「g」標誌所做的。 '^'和'$'匹配字符串的開頭和結尾。 「g」標誌主要用於替換。 – Pointy

+0

噢,好的,謝謝,這是有道理的我正在看一個替代的例子,我仍然不知道爲什麼我的JavaScript中的註冊()函數不執行,你有任何線索? – JWayne93

相關問題