2016-08-11 7 views
0

Я создал регистрационную форму для пользователей, чтобы заполнить их данные и отправить на регистрацию. Если некоторые поля пустые, имя пользователя недоступно или если электронное письмо этого пользователя уже зарегистрировано, под кнопкой отправки появляется предупреждение, останавливающее их процесс до тех пор, пока ошибки не будут исправлены.Функция Javascript не работает должным образом. edit

Ниже поля ввода email и username, есть промежуток идентификатор называется emailstatus и unamestatus, соответственно. Если имя электронной почты или имя пользователя уже зарегистрировано или недоступно, в этот промежуток времени сообщается сообщение, информирующее пользователя. Однако, отображается ли сообщение или нет, даже если нет ничего неправильного в информации пользователя, идентификатор диапазона status всегда имеет сообщение «Пожалуйста, исправьте свои ошибки». который можно найти в функции javascript signup(). Пожалуйста помоги.

HTML:

<p>Enter personal details</p> 
    //cleaned up code 
    <input id="email" onfocus="emptyElement('status')" onblur="checkemail()" onkeyup="restrict('email')" maxlength="88" type="text" class="form-control" placeholder="Email"><span id="emailstatus"></span> 

<input id="username" type="text" onfocus="emptyElement('status')" onblur="checkusername()" onkeyup="restrict('username')" maxlength="16" class="form-control" placeholder="User Name"> 
<span id="unamestatus"></span> 

<button id="signupbtn" onclick="signup();" class="btn btn-lg btn-login btn-block">Create Account</button> 
<span style="font-weight:bold;" id="status"></span> 

Javascript: Регистрация()

function signup(){ 
    var u = _("username").value; 
    var e = _("email").value; 
    var status = _("status"); 

if(unamestatus.innerHTML.value != "" || emailstatus.innerHTML.value != ""){ 
    status.innerHTML = "Please correct your errors."; 
    } else { 
     _("signupbtn").style.display = "none"; 
     status.innerHTML = 'please wait ...'; 
     var ajax = ajaxObj("POST", "registration.php"); 
     ajax.onreadystatechange = function() { 
      if(ajaxReturn(ajax) == true) { 
       if(ajax.responseText != "signup_success"){ 
        status.innerHTML = ajax.responseText; 
        _("signupbtn").style.display = "block"; 
        location.href = "registration_success.php"; 
       } 
      } 
     } 
     ajax.send("fn="+fn+"&ln="+ln+"&u="+u+"&e="+e+"&p="+p1+"&c="+c+"&g="+g); 
    } 
} 

Javascript: checkusername()

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

Javascript: checkemail()

function checkemail(){ 
    var e = _("email").value; 
    if(e != ""){ 
     //_("emailstatus").innerHTML = 'checking ...'; 
     var ajax = ajaxObj("POST", "registration.php"); 
     ajax.onreadystatechange = function() { 
      if(ajaxReturn(ajax) == true) { 
       _("emailstatus").innerHTML = ajax.responseText; 
      } 
     } 
     ajax.send("emailcheck="+e); 
    } 
} 
+0

спагетти код :( –

+0

хорошо, я уберу некоторые. @HappyCoding – Millica

+0

Im не уверен, но я не люблю чек здесь. Unamestatus.innerHTML.value! = "" || emailstatus.innerHTML.value! = " «... он всегда будет выполняться для unamestatus.innerHTML.value, как false, null, что бы это ни было.Он только пропустит, если ваши промежутки фактически опустели.Так что я предлагаю вам очистить интервалы предупреждений после каждого представления и до проверки. –

ответ

0

Ваша проблема здесь:

} else if(unamestatus.innerHTML.value != "" || emailstatus.innerHTML.value != ""){ 
    status.innerHTML = "Please correct your errors."; 
} 

innerHTML не имеет value свойство. Использование,

} else if(unamestatus.innerHTML != "" || emailstatus.innerHTML != ""){ 
    status.innerHTML = "Please correct your errors."; 
} 

вместо этого, однако есть гораздо лучшие способы сделать это.

+0

Спасибо за ваш ответ! Лучшие способы? Что вы имеете в виду? – Millica

Смежные вопросы