2015-07-13 2 views
1

У меня есть три текстовые поля:кнопку Включение, если Textboxes исправить

Имя пользователя Email Пароль

Использование JavaScript Я выполнил несколько регулярных выражений и некоторые стандартной проверки на всех текстовых полях, чтобы проверить, если введенный текст правильно в соответствии с мои стандарты, вот мой код до сих пор:

<asp:TextBox ID="username_txt" runat="server" placeholder="Username" maxlength="15" onkeyup="checkUsername(this.value)"></asp:TextBox> 
    <asp:Label ID="username_lbl" runat="server"></asp:Label> 

asp:TextBox ID="email_txt" runat="server" placeholder="Email Address" onkeyup="checkEmail(this.value)"></asp:TextBox> 
     <asp:Label ID="email_lbl" runat="server"></asp:Label> 

<asp:TextBox ID="password_txt" type="password" placeholder="Password" maxlength="20" onkeyup="countPassword(this.value)" runat="server"></asp:TextBox> 
     <asp:Label ID="password_lbl" runat="server"></asp:Label> 

<asp:Button ID="register_btn" runat="server" Text="Register" OnClick="register_btn_Click" /> 


function countPassword(password) 
    { 
     password_txt = document.getElementById('<%= password_txt.ClientID %>'); 
     password_lbl = document.getElementById('<%= password_lbl.ClientID %>'); 
     register_btn = document.getElementById('<%= register_btn.ClientID %>'); 

     if (password.length < 6) 
     { 
      password_lbl.innerHTML = 'Password must be at least 6 characters'; 
      password_lbl.style.color = "red"; 
      password_txt.style.outline = "1px solid red" 
     } 
     else 
     { 
      password_lbl.innerHTML = 'Perfect!'; 
      password_lbl.style.color = "green"; 
      password_txt.style.outline = "1px solid green" 
     } 
    } 

function checkEmail(email) 
    { 
     email_lbl = document.getElementById('<%= email_lbl.ClientID %>'); 
     email_txt = document.getElementById('<%= email_txt.ClientID %>'); 
     register_btn = document.getElementById('<%= register_btn.ClientID%>'); 

     if (email == '') { 
      email_lbl.innerHTML = 'Email cannot be blank'; 
      email_lbl.style.color = "red"; 
      email_txt.style.outline = "1px solid red" 

     } 
     else if (!email.match(/^\[email protected]\S+\.\S+$/)) 
     { 
      email_lbl.innerHTML = 'You must enter a valid email address'; 
      email_lbl.style.color = "red"; 
      email_txt.style.outline = "1px solid red" 
     } 
     else 
     { 
      email_txt.style.outline = "1px solid green" 
      email_lbl.innerHTML = 'Perfect'; 
     } 
    } 

function checkUsername(username) 
    { 
     username_lbl = document.getElementById('<%= username_lbl.ClientID %>'); 
     username_txt = document.getElementById('<%= username_txt.ClientID %>'); 
     register_btn = document.getElementById('<%= register_btn.ClientID %>'); 

     if(username == '') 
     { 
      username_lbl.innerHTML = 'Username must be at least 4 characters'; 
      username_lbl.style.color = "red"; 
      username_txt.style.outline = "1px solid red" 
     } 
     else 
     { 
      username_txt.style.outline = "1px solid green" 
      username_lbl.innerHTML = 'Perfect'; 
     } 

    } 

Теперь проблема, которую я имею, что мне нужна кнопка регистра должны быть включено, если все 3 из текстовых полей достигают «еще» в каждой из них. Однако, если 2 текстовых поля доходят до инструкций else, но 1 не делает, то кнопка регистра останется отключенной.

Я просто борюсь с логикой о том, как добиться этого, потому что я не могу сделать другое событие для каждого из текстовых полей?

ответ

0

Вместо того, чтобы выполнять проверку для каждой функции по отдельности, вы можете запускать ВСЕ функции в одной функции под названием «validate». В каждой отдельной функции вы возвращаете значение true, если функция проверена успешно. Если все значения были истинными, то вы установите кнопку register true (включена). Если один из них является ложным, установите регистр false (отключено).

function checkValidation() { 
var passcheck = countPassword(); 
var emailCheck = checkEmail(); 
var usernamecheck = checkUsername(); 
if(passcheck && emailCheck && usernamecheck) { 
    // set register true 
} else { 
    // set register false 
} 
} 

я бы, вероятно, использовать библиотеку, чтобы заботиться об этих функциях, хотя, как есть вероятные области вы пропустите проверки.

+0

Правда, но это потребует 3 параметра в функции, которая затруднит определение того, какое текстовое поле ввело данные? – mogorilla

+0

Если вы имеете в виду прохождение значений, вы можете проверить значения через их значение элемента, а не передавать значение в функцию. Поэтому проверьте пароль по document.getElementById ("password_txt") и т. Д. Для каждого из них. – Organiccat

+0

Является ли их не другим способом делать то, что я пытаюсь достичь? – mogorilla

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