jQuery在粘贴后验证数值

jQuery在粘贴后验证数值,jquery,validation,copy-paste,paste,numeric,Jquery,Validation,Copy Paste,Paste,Numeric,我知道如何验证字段的数值,但如果字段中粘贴了无效字符,如何验证字段。通常我们有一个数字字段,然后是一个动作按钮,当点击动作按钮时,数字字段可能不会触发模糊事件。在这种情况下,如何强制(重新)验证?您是在操作按钮的单击事件中再次执行此操作,还是有更优雅的解决方案?并没有真正回答您关于粘贴的问题,而是提供了另一种选择:您可以订阅表单的处理程序并在那里执行验证。更优雅的是使用,它将为您完成订阅工作,因此您只需定义规则和错误消息: $(function() { $('#myform').vali

我知道如何验证字段的数值,但如果字段中粘贴了无效字符,如何验证字段。通常我们有一个数字字段,然后是一个动作按钮,当点击动作按钮时,数字字段可能不会触发模糊事件。在这种情况下,如何强制(重新)验证?您是在操作按钮的单击事件中再次执行此操作,还是有更优雅的解决方案?

并没有真正回答您关于粘贴的问题,而是提供了另一种选择:您可以订阅表单的处理程序并在那里执行验证。更优雅的是使用,它将为您完成订阅工作,因此您只需定义规则和错误消息:

$(function() {
    $('#myform').validate({
        rules: {
            someFieldName: {
                required: true,
                number: true
            }
        },
        messages: {
            someFieldName: {
                required: 'please enter a value',
                number: 'please enter a valid number'
            }
        }
    });
});

不是真的回答你关于粘贴的问题,而是提供了另一种选择:你可以订阅表单的处理程序并在那里执行验证。更优雅的是使用,它将为您完成订阅工作,因此您只需定义规则和错误消息:

$(function() {
    $('#myform').validate({
        rules: {
            someFieldName: {
                required: true,
                number: true
            }
        },
        messages: {
            someFieldName: {
                required: 'please enter a value',
                number: 'please enter a valid number'
            }
        }
    });
});

我使用了这种验证。。。。检查粘贴的文本,如果其中包含字母,则向用户显示错误,然后在延迟后清除该框,以便用户检查文本并进行适当更改

$('#txtbox').on('paste', function (e) {
    var $this = $(this);
    setTimeout(function (e) {
        if (($this.val()).match(/[^0-9]/g))
        {
            $("#errormsg").html("Only Numerical Characters allowed").show().delay(2500).fadeOut("slow");                       
            setTimeout(function (e) {
                $this.val(null);
            },2500);
        }                   
    }, 5);
});

我使用了这种验证。。。。检查粘贴的文本,如果其中包含字母,则向用户显示错误,然后在延迟后清除该框,以便用户检查文本并进行适当更改

$('#txtbox').on('paste', function (e) {
    var $this = $(this);
    setTimeout(function (e) {
        if (($this.val()).match(/[^0-9]/g))
        {
            $("#errormsg").html("Only Numerical Characters allowed").show().delay(2500).fadeOut("slow");                       
            setTimeout(function (e) {
                $this.val(null);
            },2500);
        }                   
    }, 5);
});

我使用粘贴事件来触发keyup事件,因为只有使用粘贴事件,我才能以某种方式获得输入,但无法操作给定的输入。下面是我如何找到一种方法的(顺便说一句,我将其用于字母表验证,但您也可以使用input type=“number”来验证数字)-

$(.NumberValidateOnPaste”).on('paste',函数(e){
$(e.target.keyup();
});
$('.NumberValidateOnPaste').on('keyup',函数(e){
var值=$(this.val();
var result=value.match(/^\d*$/);
如果(结果==null){
$(this.val(“”);
}
});
Pin码

我使用粘贴事件来触发keyup事件,因为只有使用粘贴事件,我才能以某种方式获得输入,但无法操作给定的输入。下面是我如何找到一种方法的(顺便说一句,我将其用于字母表验证,但您也可以使用input type=“number”来验证数字)-

$(.NumberValidateOnPaste”).on('paste',函数(e){
$(e.target.keyup();
});
$('.NumberValidateOnPaste').on('keyup',函数(e){
var值=$(this.val();
var result=value.match(/^\d*$/);
如果(结果==null){
$(this.val(“”);
}
});
Pin码

Darin的答案是最佳实践,但我会接受你的答案,因为它特别适用于粘贴问题。只花了6年多的时间就得到了答案。对不起,我迟到了,我最近在我的一个应用程序中使用了这个东西。。。Darin的答案是一个最佳实践,但我会接受你的答案,因为它特别适用于粘贴问题。只花了6年多的时间就得到了答案。对不起,我迟到了,我最近在我的一个应用程序中使用了这个东西。。。我想这可能会帮助其他人…粘贴后在更新输入值之前会有一个小延迟,这可能就是你没有得到值的原因。此外,这是一种非常低效的匹配方法,您可以对值本身调用
.match()
。另外,这是一个非常过时的jQuery版本。粘贴后在更新输入值之前会有一个小的延迟,这可能就是您没有得到值的原因。此外,这是一种非常低效的匹配方法,您可以对值本身调用
.match()
。另外,这是一个非常过时的jQuery版本。