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

尝试这个:

<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 回答
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,然后使用以 selector 结尾的属性

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

error-label但我建议向所有错误占位符添加一个类并更改$('[id$="_error"]').html('')$('.error-label').html('')

于 2013-03-17T11:38:48.790 回答