2017-01-20 70 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?我知道很多有兩個字母名字的人 – Pete

+1

我們不知道你的'tambahError'函數做了什麼 - 可能它只是向目標元素髮出錯誤消息,而不是替換它們。 – 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') 
     } 
    }