0
我有使用javascript我使用了登記表的麻煩

,我得到了遺漏的類型錯誤:需要指導與JavaScript錯誤遺漏的類型錯誤

tf.value = tf.value.replace(rx, ""); 
:此行我的JavaScript後無法讀取空的特性「值」

而且這行JavaScript代碼後:

var m = _("mobileNumber").value.length; 

這裏是我的JavaScript和形式:

<script> 
    function restrict(elem){ 
    var tf = _(elem); 
    var rx = new RegExp; 
    if(elem === "email"){ 
     rx = /[' "]/gi; 
    } else if(elem === "username"){ 
     rx = /^[a-z0-9]i*$/; 
    } else if(elem === "mobileNumber"){ 
      rx = /^[0-9]*$/; 
     } 
    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.length; 
    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 { 

FUNCTION

function _(x){ 
    return document.getElementById(x); 
} 

FORM

<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

領域'mobileNumber'都有一個名字,但沒有一個id。如果我正確地記得getElementById不能使用'name',但必須有'id'。 – some

+0

我創建了一個外部js文件,我剛剛添加了上面的_函數,謝謝 – Joey93

+0

啊是的,id部分應該修復其中一個錯誤,謝謝 – Joey93

回答

1

在第一種情況下,tf變量爲空。由於您僅在聲明變量時才設置變量,這意味着_(elem)返回null。

在第二種情況下,函數調用_(「mobileNumber」)返回null。

這是可能的,告訴更多的,如果你不發佈_功能

+0

對不起,我會用_函數更新這個問題 – Joey93