Javascript 验证后显示错误消息-jQuery验证

Javascript 验证后显示错误消息-jQuery验证,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,我有一个比较两个字段的函数 $.validator.addMethod("validatormethod", function (value, element) { return $('#Field1').val() > $('#Field2').val() }, "Test"); 表单是动态的,因此使用每个对表单进行验证: $('.validateclass').each(function () { $(this).rules('add', {

我有一个比较两个字段的函数

$.validator.addMethod("validatormethod", function (value, element) {
    return $('#Field1').val() > $('#Field2').val()
}, "Test");
表单是动态的,因此使用
每个
对表单进行验证:

$('.validateclass').each(function () {
        $(this).rules('add', {
            validatormethod: true,
            messages: {validatormethod: "Test" }
        })
    });

$('.validateclass2').each(function () {
        $(this).rules('add', {
            required: true,
            messages: {required: "This field is required" }
        })
    });

$('#myForm').valid();
现在我的问题是,页面加载后会立即显示消息
Test
。它应该仅在比较字段后显示。我知道这是由于行
$('#formSaveComponent').valid()引起的。但是我希望在页面加载时显示所需的消息。是否有某种方法可以使用jQuery验证插件完成这项工作


引用作品:

“现在我的问题是,页面加载后会立即显示消息测试。它应该仅在比较字段后显示。”

您已经编写了自定义方法,就好像字段是
必需的
。。。这就是为什么您会在字段仍然为空时立即收到错误消息的原因

只要这些字段不是
必需的
,您就需要将
this.optional(element)|
添加到自定义方法中,如下所示

$.validator.addMethod("validatormethod", function (value, element) {
    return this.optional( element ) || $('#Field1').val() > $('#Field2').val()
}, "Test");
现在,除非在相关字段中输入了内容,否则自定义方法将不会激发


编辑1

虽然我不知道为什么,在您的JSFIDLE中,您正在使用
比较运算符将
txtLastName
txtLastName
进行比较。。。一个名字怎么可能比另一个“大”


编辑2

因为

  • 您通过
    id
    将字段作为目标,但是您的字段只包含
    名称
    ,没有
    id
    。 将
    $('#fieldname')
    更改为
    $('[name=“fieldname”]”)
    name
    为目标

  • 您正在使用比较运算符比较两个字符串,这将始终失败,因为字符串不是数字。您需要将字符串转换为整数,以便比较它们

    parseInt($('[name="fieldname"]').val())
    

  • 演示:

    显示表单的HTML。另外,请详细说明页面加载时触发
    .valid()
    的原因以及标题的含义。在验证后显示错误消息是默认行为。我正在触发,因为有许多字段,对于某些字段,我希望在页面加载时立即触发验证。单击submit按钮后,则不会执行此操作。加载表单时,表单加载上的Setting.Valid()将针对表单上的每个字段运行,这就是显示“Test”的原因。如果您只想验证某些内容,那么应该指定要验证的字段,而不是整个表单。您仍然需要单击“编辑”链接为读者澄清问题,并添加一些相关的HTML。检查我创建的小提琴,我正在尝试做的是,在submit/tab事件后触发错误消息
    Test
    。此操作有效,但即使消息正确(有效),也会显示消息“Test”field@user2281858,这是没有意义的,因为当字段有效时,不会显示错误消息;以及为什么我两次要求您在问题中显示相关的HTML代码。我将查看您的JSFIDLE,但根据本网站的规则,JSFIDLE不能代替在问题本身中显示代码。@user2281858,我在您的JSFIDLE中的代码:~请准确解释失败的原因和原因。我目前没有相关的HTML,但行为与FIDLE相同。我正在比较两个文本框,如果一个大于另一个,则应显示错误消息。@user2281858,我解决了您原来的问题。如果自定义方法的核心功能也被破坏,那么您应该在OP中清楚地解释自定义方法的目标。但是,假设您正在比较两个数字。。。请参阅我编辑的答案。