0

ユーザーが入力を再度修正した後、各フィールドに割り当てられたエラーメッセージを非表示/削除するにはどうすればよいですか?以下のスクリプトは、入力が無効な場合にエラーメッセージを表示しますが、ユーザーが有効な値を再度入力してボタンをクリックすると、エラーメッセージが表示されたままになります。修正方法は?

これはコールバックです

 $('#btn_register').click(function(){
    var parameters = $('#register_form').serialize();
    $.ajax({
        url: 'request.php',
        type: 'POST',
        data: parameters,
        dataType: 'json',
        success: function(response){
            if(response.success == 'success'){

                alert('Success');
                $('#register_form')[0].reset();

            }else{
                if(response.error.email != ''){
                    $('#email_error').html(response.error.email);
                }
                if(response.error.password != ''){
                    $('#password_error').html(response.error.password);
                }
                if(response.error.rpassword != ''){
                    $('#rpassword_error').html(response.error.rpassword);
                }
                if(response.error.fname != ''){
                    $('#fname_error').html(response.error.fname);
                }
                if(response.error.contact != ''){
                    $('#contact_error').html(response.error.contact);
                }
                if(response.error.dob != ''){
                    $('#dob_error').html(response.error.dob);
                }
                if(response.error.captcha != ''){
                    $('#captcha_error').html(response.error.captcha);
                }
            }
        },
        error: function(){
            console.log(arguments);
        }
    });

});

これは、コールバックが無効な場合にエラーメッセージを表示するフォームフィールドです。

<input type="text" id="email" name="email" /><br /><span class="error" id="email_error"></span>

アドバイスと感謝をお願いします。

4

2 に答える 2

0

与えられたマークアップの下で、私は次のようなことをします

success: function(response){
    if(response.success == 'success'){
        .....
    } else {
        $('[id$="_error"]').html('');

        $.each(response.error, function(key, value){
            if(value){
                $('#' + key + '_error').html(value);
            }
        });
    }
}

idすべてのエラーメッセージをクリアするために、ロジックは、すべてのエラープレースホルダー要素がで終わる属性を持っているという仮定に基づいており、セレクターで終わる属性_errorを使用します

$('[id$="_error"]').html('');

ただしerror-label、すべてのエラープレースホルダーにlikeクラスを追加して、に変更$('[id$="_error"]').html('')することをお勧めします。$('.error-label').html('')

于 2013-03-17T11:38:48.790 に答える
0

これを試して:

<input type="text" id="email" name="email" onChange="resetInput(this);"/>

function resetInput(placeholder) {
      $('#'+$('placeholder').attr('id')+'_error').text('');
}

または、ajaxの成功を試してみてください:

    success :function () {
    $('[id$="_error"])').text('');
if(response.success == 'success'){
                alert('Success');
                $('#register_form')[0].reset();
            }else{...............}
    }
于 2013-03-17T11:39:58.337 に答える