2012-08-06 177 views
1

我使用下面的代碼來比較pass和confirm password text字段。它的工作正常,但問題是如果輸入不匹配的密碼其顯示錯誤'密碼不匹配',然後如果我匹配密碼它顯示'密碼匹配'旁邊的舊錯誤。所以它的顯示,如「密碼不匹配的密碼匹配」(請參閱​​參考下圖.. Error Image使用jquery清除span的內部html

。如何清除跨度之前,我顯示的消息。

$(confPassword).live('blur', function() { 
    alert(password.value); 
    if (password.value != 'Password') { 
     alert("hi"); 
     if (password.value == confPassword.value) { 
      alert("match"); 
      setupConfirmControl(confPassword, astConfPassword, lblConfPassword, true); 
     } 
     else { 
      alert("dont match"); 
      setupConfirmControl(confPassword, astConfPassword, lblConfPassword, false); 
     } 
    } 
}); 

function setupConfirmControl(elemObj, id, labelTxt, addToParent) { 
    var ConfirmPass = document.createElement('span'); 
    ConfirmPass.setAttribute('class', 'ClsConfirmPass'); 
    ConfirmPass.setAttribute('id', 'span' + id); 
    ConfirmPass.innerHTML = ''; 
    if (addToParent) { 
     ConfirmPass.innerHTML = 'Passwords match'; 
     elemObj.parentNode.insertBefore(ConfirmPass, elemObj); 
    } 
    else { 
     ConfirmPass.innerHTML = 'Passwords do not match'; 
     elemObj.parentNode.insertBefore(ConfirmPass, elemObj); 
    } 
    showConfirmPassWord(id); 
} 

回答

1

的問題是,你「重新創建函數內的span每一次,只是檢查是否存在跨度,如果是的話,使用範圍:

function setupConfirmControl(elemObj, id, labelTxt, addToParent) { 
    var ConfirmPass = document.getElementById('span' + id); 
    if (!ConfirmPass){ 
     ConfirmPass = document.createElement('span'); 
     ConfirmPass.setAttribute('class', 'ClsConfirmPass'); 
     ConfirmPass.setAttribute('id', 'span' + id); 
     ConfirmPass.innerHTML = ''; 
    } 

    if (addToParent) { 
     ConfirmPass.innerHTML = 'Passwords match'; 
     elemObj.parentNode.insertBefore(ConfirmPass, elemObj); 
    } 
    else { 
     ConfirmPass.innerHTML = 'Passwords do not match'; 
     elemObj.parentNode.insertBefore(ConfirmPass, elemObj); 
    } 
    showConfirmPassWord(id); 
} 

這有效地分配先前CRE (id等於'span' + id,假設它們對於相同字段的錯誤消息是恆定的)。然後,如果文檔中沒有id的元素(!ConfirmPass),則創建該元素。

這樣,通過設置innerHTML將覆蓋span中的任何以前編寫的內容。

+0

你*非常*歡迎;我很高興得到了幫助,並且,我可以補充一句,感謝*你*接受! =) – 2012-08-06 21:02:37