2013-03-07 5 views
0
  • У меня есть проверка текстового поля здесь. Сообщение об ошибке не будет отображаться как предупреждение, вместо этого оно будет напечатано в теге html div.

Html:Проверка в реальном времени с помощью javascript

<div id="error" style="position:absolute; left:auto; top:7px;"></div> 
    <div style="position:absolute; left:auto; top:25px;"> 
    First name: <input type="text" id="fname" name="fname"><br> 
    Last name: <input type="text" id="lname" name="lname"><br> 
    <input type="submit" value="Submit" onclick="requiredFields()"><div> 

Javascript:

function requiredFields(){ 
    var fName = document.getElementById("fname").value; 
    var lName = document.getElementById("lname").value; 
    if(fName == ""){ 
     document.getElementById("error").innerHTML = "First name field cannot be empty"; 
    }else if(lName == ""){ 
     document.getElementById("error").innerHTML = "Last name field cannot be empty"; 
    }else{ 
     document.getElementById("error").innerHTML = ""; 
     alert("successful"); 
    } 
} 
  • На нажатием кнопки, я печатая сообщение об ошибке.
  • Мой вопрос в том, есть ли какая-либо живая проверка в javascript?
  • Я имею в виду, что сначала должно появиться сообщение об ошибке, нажатие кнопки и время, когда пользователь вводит значение в текстовое поле, если текстовое поле первого имени имеет какое-либо значение, мне нужно очистить сообщение об ошибке, не нажимая кнопку снова ,

просто проверить мою ссылку и помочь мне .. http://jsfiddle.net/GACKm/

+0

Вот [несколько сложный пример] (http://jsfiddle.net/userdude/CMmDF/) (с помощью JQuery), но если вы посмотрите на обработке событий и функция, которая вызывается 'submit', более или менее вам просто нужно включить часть сообщения в функцию, которую вы можете называть как отправкой, так и в конце функции проверки, а затем использовать' blur' или 'change' для запуска события на каждое требуемое поле. –

+0

@ Rachel взгляните на мой ответ, я протестировал его и его работу, я даже предоставил jsfiddle для вас .. –

ответ

1

Вот jsFiddle

// Javascript

<script type="text/javascript" language="javascript"> 
    var oneTimeMsgClikced = false; 
    function requiredFields() { 
     var fName = document.getElementById("fname").value; 
     var lName = document.getElementById("lname").value; 
     if (fName == "") { 
      document.getElementById("error").innerHTML = "First name field cannot be empty"; 
      oneTimeMsgClikced = false; 
     } else if (lName == "") { 
      document.getElementById("error").innerHTML = "Last name field cannot be empty"; 
      oneTimeMsgClikced = false; 
     } else { 
      document.getElementById("error").innerHTML = ""; 
      if (oneTimeMsgClikced == false) { 
       alert("successful"); 
       oneTimeMsgClikced = true; 
      } 
     } 
    } 
</script> 

// HTML код

<body> 
    <div id="error" style="position: absolute; left: auto; top: 7px;"> 
     Errors here 
    </div> 
    <div style="position: absolute; left: auto; top: 25px;"> 
     First name: 
     <input type="text" id="fname" name="fname" onblur="requiredFields()" /> 
     <br /> 
     Last name: 
     <input type="text" id="lname" name="lname" onblur="requiredFields()"/> 
     <br /> 
     <input type="submit" value="Submit" onclick="requiredFields()" /> 
    </div> 
</body> 
+0

его работаю ... спасибо :) – Rachel

0

Вы можете попробовать с onBlur и onKeyUp

+0

проверить ссылку .. http://jsfiddle.net/GACKm/ как использовать onBlur и onKeyup в этом дело? – Rachel

+0

Rachel 'onblur' может использоваться на текстовых элементах. –

0

Вы не должны использовать OnClick обработчик события Submit.

Для проверки в реальном времени вы можете использовать onblur, вставить его в поле ввода. Это будет проверять ввод при каждом удалении от поля ввода.

+0

вы можете проверить ссылку .. http://jsfiddle.net/GACKm/ на обработчике событий click для кнопки необходимо. – Rachel

+0

@ Rachel - Bazinga777 означает, что вам нужно для обработки события '' '' '' '' '' '' '', а не 'click [type = submit]' click. Это не остановит 'form' от отправки (' onclick'), что и подразумевается здесь. В вашей скрипке нет элемента 'form' вокруг' input [type = submit] ', поэтому вы не видите проблему. –

+0

@ Jared Farrish okay ... Спасибо – Rachel

0

вы можете попробовать это:

<script> 
function checkFName() 
{ 
    fName = document.getElementById("fname").value; 
    if(fName == ""){ 
     document.getElementById("error").innerHTML = "First name field cannot be empty"; 
     document.getElementById("fname").focus; 
     return false; 
    } 
} 

function checkLName() 
{ 
    lname = document.getElementById("lname").value; 
    if(lname == ""){ 
     document.getElementById("error").innerHTML = "Last name field cannot be empty"; 
     document.getElementById("lname").focus; 
     return false; 
    } 
} 
</script> 


<div id="error" style="position:absolute; left:auto; top:7px;"></div> 
    <div style="position:absolute; left:auto; top:25px;"> 
    First name: <input type="text" id="fname" name="fname" onchange="checkFName();"><br> 
    Last name: <input type="text" id="lname" name="lname" onchange="checkLName();"><br> 
    <input type="submit" value="Submit"><div> 

Надеется, что это поможет

1

Вот такой подход, который использует некоторые подходы, которые являются более современными, чем встроенные обработчики событий (например, onchange=""). Это обусловлено data- атрибутов, как вы увидите, и хотя он не настроен для обработки ничего, кроме input[type=text] прямо сейчас, она может быть расширена для работы с select с, textarea с, и т.д.

Что такое ниже не претендует на работу с IE8 и ниже, из-за этих версий с использованием attachEvent вместо addEventListener для настройки обработчиков событий. Опять же, это может быть сработано, но оно работает во всех других современных браузерах. Он должен работать в IE9, хотя это не проверено.

Это может показаться чересчур продолжительным, но взгляните на него и посмотрите, сможете ли вы его работать. Не стесняйтесь задавать мне любые вопросы, которые вам нравятся.

Вот скрипка (протестировано в Chrome и Firefox):

http://jsfiddle.net/ndXTb/

HTML

<aside> 
    <ol id="errors"></ol> 
</aside> 
<section id="signup"> 
    <form action="#"> 
     <p> 
      <label for="fname">First Name:</label> 
      <span> 
       <input type="text" id="fname" name="fname" class="required" 
         data-validate-error="First name may not be empty." 
         data-error-sort="0"/> 
      </span> 
     </p> 
     <p> 
      <label for="lname">Last name:</label> 
      <span> 
       <input type="text" id="lname" name="lname" class="required" 
         data-validate-error="Last name may not be empty." 
         data-error-sort="1"/> 
      </span> 
     </p> 
     <p> 
      <label for="addr1">Address 1:</label> 
      <span> 
       <input type="text" id="addr1" name="addr1" class="required" 
         data-validate-error="Address may not be empty." 
         data-error-sort="2"/> 
      </span> 
     </p> 
     <p> 
      <label for="addr2">Address 2:</label> 
      <span><input type="text" id="addr2" name="addr2"/></span> 
     </p> 
     <p> 
      <label for="city">City:</label> 
      <span> 
       <input type="text" id="city" name="city" class="required" 
         data-validate-error="City may not be empty." 
         data-error-sort="3"/> 
      </span> 
     </p> 
     <p> 
      <label for="state">State:</label> 
      <span> 
       <input type="text" id="state" name="state" class="required" 
         data-validate-error="State may not be empty." 
         data-error-sort="4"/> 
      </span> 
     </p> 
     <p> 
      <span></span> 
      <span style="text-align: right;"> 
       <input type="submit" value="Submit"/> 
      </span> 
     </p> 
    </form> 
</section> 

CSS

#signup { 
    display: table; 
} 
#signup form > p { 
    display: table-row; 
} 
#signup p > label, 
#signup p > span { 
    display: table-cell; 
    font-weight: bold; 
    padding: 5px; 
} 
#signup p > label { 
    text-align: right; 
    width: 150px; 
} 
.validationerror input { 
    border: 1px solid #a00; 
    background-color: #ffd; 
    padding: 2px 1px; 
} 
.validationerror:after { 
    content: '!'; 
} 

Javascript

window.addEventListener('load', function init(){ 
    var signup = document.getElementById('signup'), 
     fields = signup.getElementsByClassName('required'), 
     errors = document.getElementById('errors'), 
     error = '<li>{error}</li>', 
     submitted = false, 
     errorlog = [], 
     index = 0, 
     field, 
     focusin; 

    signup.addEventListener('submit', validateform); 

    while (field = fields[index++]) { 
     field.addEventListener('blur', validatefield); 
     field.addEventListener('keyup', validatefield); 
    } 

    function validatefield() { 
     var message = this.dataset['validateError'], 
      sort = this.dataset['errorSort'], 
      parent = this.parentNode; 

     if (this.value === '' && (message && sort)) { 
      errorlog[sort] = error.replace('{error}', message); 
      parent.className += ' validationerror'; 

      if (!focusin) { 
       focusin = this; 
      } 
     } else if (this.value !== '' && (message && sort)) { 
      delete errorlog[sort]; 

      parent.className = parent.className.replace('validationerror', ''); 

      if (focusin == this) { 
       focusin = null; 
      } 
     } 

     if (!submitted) { 
      isvalid(); 
     } 
    } 

    function validateform(event) { 
     index = 0; 
     errorlog = []; 
     focusin = null; 

     submitted = true; 

     while (field = fields[index++]) { 
      callevt(field, 'focus'); 
      callevt(field, 'blur'); 
     } 

     submitted = false; 

     if (!isvalid()) { 
      if (focusin) { 
       focusin.focus(); 
      } 

      focusin = null; 

      event.preventDefault(); 
      return false; 
     } 
    } 

    function isvalid() { 
     errors.innerHTML = ''; 

     if (errorlog.length) { 
      errors.innerHTML = errorlog.join(''); 

      return false; 
     } 

     return true; 
    } 

    function callevt(el, type) { 
     var evt = document.createEvent('HTMLEvents'); 

     evt.initEvent(type, true, true); 
     el.dispatchEvent(evt); 
    } 
}); 
Смежные вопросы