Javascript jQuery在填写上一个表单字段时,在KeyUp上验证下三个表单字段

Javascript jQuery在填写上一个表单字段时,在KeyUp上验证下三个表单字段,javascript,jquery,ajax,jquery-validate,Javascript,Jquery,Ajax,Jquery Validate,我有一个表单,当按下submit并且formfieldpropBacklink有一个值时,以下3个字段(X、Y、Z)也会被验证。这与它们的值无关,因为它们是只读的。Ajax调用根据Ajax调用中的变量返回true或false 我的问题是,如何在formfieldpropBacklink的keyup上强制验证字段(X、Y、Z) propBacklink:{ 必填项:false, 网址:对, 远程:{ url:“backlinkInDB.php”, 类型:“职位” }, 规则:{ CheckNex

我有一个表单,当按下submit并且formfield
propBacklink
有一个值时,以下3个字段(X、Y、Z)也会被验证。这与它们的值无关,因为它们是只读的。Ajax调用根据Ajax调用中的变量返回true或false

我的问题是,如何在formfield
propBacklink
的keyup上强制验证字段(X、Y、Z)

propBacklink:{
必填项:false,
网址:对,
远程:{
url:“backlinkInDB.php”,
类型:“职位”
},
规则:{
CheckNextFields:true
}
},
$.validator.addMethod(“CheckNextFields”,函数(值){
元素($(“[name='X']”).validate();
元素($(“[name='Y']”)。验证();
元素($(“[name='Z']”).validate();

});由于您的OP不包含任何代码,因此我的答案将不包含代码

如何强制验证formfield
propBacklink
的字段(X、Y、Z)
onkeyup

默认情况下,插件在submit的
点击
上评估整个表单,在
键控
聚焦输出
上分别评估每个字段(在
点击
查看
电台
复选框
,以及
选择

由于要在触发
propBacklink
字段时计算一组字段,因此需要使用为
propBacklink
编写新方法(规则)

  • 在这个自定义函数中,您可以使用
    this.element()
    触发对任何元素的验证

  • 仅将此新规则分配或声明给一个字段,
    propBacklink
    X
    Y
    Z
    将根据新自定义规则函数中包含的
    this.element()
    进行验证

  • 既要注意细节,也要注意细节


编辑

我不知道你想用这个触发用户无法直接控制的
readonly
字段验证的方案来完成什么

下面将检查
X
Y
Z
是否有效,如果其中任何一个未通过验证,则返回错误

$.validator.addMethod("CheckNextFields", function(value, element) {

    return this.optional(element) || (this.element($("[name='X']")) && this.element($("[name='Y']")) && this.element($("[name='Z']")));

}, "X, Y, and Z are not valid.");
(当然,如果要验证它们,还需要为
X
Y
Z
分配一些验证规则。否则,会触发什么?)

规则对象的格式也有点混乱。您应该将规则放入
rules
对象中。它们由字段名的key:value对和每个字段的规则列表组成

$('#yourform').validate({
    rules: {
        propBacklink: {
            // rules for propBacklink
            required: false,  // <- superfluous (default)
            url: true,
            remote: {
                url: "backlinkInDB.php",
                type: "post"
            },
            CheckNextFields: true
        },
        X: {
            // rules for X
        },
        Y: {
            // rules for Y
        },
        Z: {
            // rules for Z
        },
        ....
    },
    ....
$('yourform')。验证({
规则:{
propBacklink:{
//反向链接规则

必需:false,//如果代码缺失,则无法运行代码段。换句话说,如果没有相关的HTML,JavaScript是无用的。编辑以删除代码段。您的问题不清楚。默认情况下,验证也会在keyupfocusout上触发。您是否询问如何基于so触发验证其他活动?哦,对不起。希望这个添加内容能更好地解释:事实上,当前的表单字段焦点是在keyup上验证的。但我也希望字段X、Y、Z在表单字段A的keyup上验证。我有一些想法,但您需要展示您的代码尝试。因此,您没有按照我第一条注释的建议添加相关HTML,而是删除了所有的代码?只是在没有其他任何东西的情况下转储一个功能性请求并不是一个好问题。请参阅:谢谢你的建议!经过数小时的搜索和玩转,我找到了上面的代码,但不幸的是,这还不起作用。我做错了什么?@Peps,仍然不清楚你在做什么,但我编辑了我的答案,以向你展示什么您的自定义方法应该如下所示。
$('#yourform').validate({
    rules: {
        propBacklink: {
            // rules for propBacklink
            required: false,  // <- superfluous (default)
            url: true,
            remote: {
                url: "backlinkInDB.php",
                type: "post"
            },
            CheckNextFields: true
        },
        X: {
            // rules for X
        },
        Y: {
            // rules for Y
        },
        Z: {
            // rules for Z
        },
        ....
    },
    ....