2017-01-20 3 views
-1

У меня есть некоторые функции, чтобы проверить некоторые поля ввода, как это:ошибка, если и если еще в Javascript

function validateName() { 
     var inputName = document.getElementById('name'); 
     var pesanError =''; 
     if (inputName.value ===""){ 
      pesanError = 'Name can't be empty' 
      tambahError('name',pesanError) 
     }else if(inputName.value !="" && inputName.value.length < 3){ 
      remove('name'); 
      pesanError = 'Name is too short' 
      tambahError('name',pesanError) 
     }else{ 
      remove('name') 
     } 
    } 

и я использую добавить событие так:

var inputName = document.getElementById('name'); 
inputName.addEventListener("blur", validateName, true); 

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

здесь удалить функцию и функцию tambahError:

function remove(id) { 
     var element = id + "Error"; 
     var inputName = document.getElementById(element); 
     if (inputName !== undefined){ 
      inputName.remove(); 
     } 
    } 
function tambahError(kolom,pesan) { 
     if (document.getElementById(kolom+"Error")== undefined){ 
      var inputName = document.getElementById(kolom); 
      var h = document.createElement("span"); 
      h.id = kolom+"Error"; 
      var t = document.createTextNode(pesan); 
      h.appendChild(t); 
      h.className='error'; 
      insertAfter(h, inputName); 
     } 
    } 
+0

Почему это имя слишком коротким, когда менее 3? Я знаю много людей с именами из 2 букв – Pete

+1

Мы понятия не имеем, что делает ваша функция 'tambahError' - может быть, что это просто _appends_ сообщения об ошибках целевому элементу вместо их замены. – CBroe

+0

Вы могли бы написать код функции 'remove' и' tambahError'! что может помочь –

ответ

0

попробовать этот

pesanError = 'Name can't be empty' 

изменить строку

pesanError = 'Name can\'t be empty' 

этого следует исправить ошибку

0

У нас нетподумайте, что ваш tambahError и pesanError и удалите. Попробуй это.

<!DOCTYPE html> 
<html lang="en"> 
<head> 

    <script> 
function validateName() { 
     var inputName = document.getElementById('name'); 
     var pesanError =''; 
     if (inputName.value ===""){ 
      alert("Name can't be empty"); 
     }else if(inputName.value !="" && inputName.value.length < 3){ 
      alert("Name is short"); 
     }else{ 
      alert("remove name"); 
     } 
    } 

    var inputName = document.getElementById('name'); 
inputName.addEventListener("blur", validateName, true); 

    </script> 
</head> 
<body> 
    <input id='name'></input> 
</body> 
</html> 
+0

Я уже обновляю свой вопрос с помощью функции tambahError и pesanError. Благодарю. – Ying

0

найти свой собственный ответ, проблема createTextNode не может быть обновлена, поэтому я просто удалить промежуток и создать новый узел снова, как это:

function validateName() { 
     var inputName = document.getElementById('name'); 
     var pesanError =''; 
     if (inputName.value ===""){ 
      remove('name'); 
      pesanError = 'Nama tidak boleh kosong'; 
      tambahError('name',pesanError) 
     }else if(inputName.value !="" && inputName.value.length < 3){ 
      remove('name'); 
      pesanError = 'Nama yang anda masukkan terlalu pendek' 
      tambahError('name',pesanError) 
     }else{ 
      remove('name') 
     } 
    } 
Смежные вопросы