如果我在警告消息后给出val函数,则jquery-textfield无法正常清除

时间:2015-10-07 12:21:37

标签: javascript jquery

目前我正在进行jquery验证。这里我有两个文本字段,如果用户试图通过错误的字母输入它,用户只能输入数字,它应该只是数字。

使用我当前的代码,这工作得很好,但文本没有正确清除。

这是jquery代码

 $('.txt_CC').on('change',function(e){

        var len = $('#txt_CC').val().length;
        if(len == 1){
            $('.cc_field').val( '00' + $('.cc_field').val());
        }else if(len == 2){
        $('.cc_field').val('0'+ $('.cc_field').val() );
        }else if(len == 3){
        }
    }); 

  $('.txt_CC').keypress(function(e){
         if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
                //display error message
                $('.txt_CC').val('');
                    alert("Digit only");
                }
        });  

请建议我代码是否正确

以下是html的fiddle link

提前致谢

2 个答案:

答案 0 :(得分:3)

<强> DEMO

如果它是一个字符,您可以通过阻止在其中输入文本而不是清除来执行e.preventDefault()。例如:

$('.txt_CC').keypress(function(e){
    if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
           e.preventDefault();
           alert("Digit only");
    }
});

<强>更新

只需将phone number元素类添加到keypress事件中,如下所示:

$('.txt_CC,.pn_field').keypress(function(e){
    if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
               e.preventDefault();
               alert("Digit only");
    }
});

<强> DEMO

答案 1 :(得分:2)

您正在使用按键更改键盘。 onKeyPress Vs. onKeyUp and onKeyDown