1

以下のコードを使用して、パスを比較し、パスワードのテキストフィールドを確認しています。正常に動作していますが、不一致のパスワードを入力すると、「パスワードが一致しません」というエラーが表示され、その後、パスワードが一致すると、古いエラーの横に「パスワードが一致する」と表示されます。そのため、「パスワードがパスワードの一致と一致しません」のように表示されます(参照用の画像を参照してください。エラー画像

。メッセージを表示する前にスパンをクリアする方法。

   $(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);
}
4

1 に答える 1

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);
}

spanこれにより、以前に作成された要素が効果的に割り当てられます(同じフィールドのエラーメッセージに対して一定であると仮定すると、にid等しくなります)。次に、ドキュメント( )に'span' + idその要素がない場合は、要素を作成します。id!ConfirmPass

このように、で以前に書き込まれたコンテンツは、spanを設定することで上書きされますinnerHTML

于 2012-08-06T20:39:31.217 に答える