0

.on('click', function())別の関数を呼び出しているがあります

$('.controls a[data-attr="editEmailAddress"]').on('click', function (e) {
    e.preventDefault();
    if ($(this).hasClass("btn-primary")) {
        updateEmailAddress();
    } else {
        hideSuccess();
    }
    $(this).addClass("btn-primary");
    $(this).find('i').addClass("icon-white icon-edit").addClass('icon-ok');
    $(this).siblings('input[type=text]').attr('disabled', false);
});

関数はいくつかの標準的な検証を行い、それが有効な場合は、btn-primaryとりわけクラスを削除することになっています。

function updateEmailAddress() {
    // Clear the error div of any previous errors
    $('#validationSummary').hide().empty();

    var isValid = true;

    // Must Enter Email Address
    var emailEntered = $('#txtEmailAddress').val();
    if (!$.trim(emailEntered).length) {
        $('#validationSummary').append('Email address required').fadeIn();
        isValid = false;
    }
    else {
        // If Email Entered verify that it is a valid email address
        if (!validateEmail(emailEntered)) {
            $('#validationSummary').append('Enter valid email address.').fadeIn();
            isValid = false;
        }
    }
    if (isValid) {
        // Change state of edit icon
        $('#lnkEditEmailAddress').removeClass("btn-primary");
        $('#lnkEditEmailAddress').find('i').addClass("icon-white icon-edit").addClass('icon-ok');
        $('#lnkEditEmailAddress').siblings('input[type=text]').removeAttr('disabled', true); }
}

ここに動作するjsfiddleがあります

入力/画像を元の無効な状態に戻すために必要な変更を誰かが特定できますか? これは、ページの読み込み時にクラスが DOM にないことと関係がありますか?

明らかに、エラーの原因が見つからない Web メソッドがあります。

4

1 に答える 1

1

updateEmailAddress()問題は、実行が完了しても関数が停止しないことです。代わりに、継続してすぐに を再追加しますbtn-primary。これを試して:

$('.controls a[data-attr="editEmailAddress"]').on('click', function (e) {
    e.preventDefault();
    if ($(this).hasClass("btn-primary")) {
        updateEmailAddress();
        return; // note this addition
    } else {
        hideSuccess();
    }
    $(this).addClass("btn-primary"); // if you don't return, this gets called right after .removeClass(...)
    $(this).find('i').addClass("icon-white icon-edit").addClass('icon-ok');
    $(this).siblings('input[type=text]').attr('disabled', false);
});
于 2013-07-15T22:09:10.137 に答える