首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JQuery校验器插件验证条件

JQuery校验器插件验证条件
EN

Stack Overflow用户
提问于 2015-06-07 00:08:08
回答 1查看 61关注 0票数 0

我有一些问题,充分验证我的数据与验证器插件。

我有两个字段: fieldOne和fieldTwo。然后我有两个PHP文件,process.php和processfailed.php。

现在我有很多条件。

如果fieldOne和fieldTwo都是空的,我希望将错误显示给用户,但不需要调用PHP。

如果其中一个字段具有有效数据,而另一个字段具有无效数据或为空数据,则我希望它调用process.php (我不希望发生验证错误事件)。

只有当两个字段都有无效的数据时,我才希望在验证错误事件中调用processfailed.php。

到目前为止,我所掌握的代码是(删除了一些部分以缩短代码)。

代码语言:javascript
运行
复制
var validator = $("#my_form").validate({
    rules: {
        fieldOne: {
            require_from_group: [1, '.datagroup'],
            maxlength: 40
        },
        fieldTwo: {
            require_from_group: [1, '.datagroup'],
            minlength: 8
        }
    },
    groups: {
        datagroup: "fieldOne fieldTwo"
    },
    submitHandler: function (form) {
        $.ajax({
            type: "POST",
            url: "process.php",
            data: {
                'fieldOne': $("#fieldOne").val(),
                'fieldTwo': $("#fieldTwo").val()
            }
        })
        return false;
    },
    invalidHandler: function (form, validator) {
        /* Submit the form even if validation fails: */
        $.ajax({
            type: "POST",
            url: "processfailed.php",
            data: {
                'fieldOne': $("#fieldOne").val(),
                'fieldTwo': $("#fieldTwo").val()
            }
        })
        return false;
    }
});

关于它们都是空的,目前它会向用户显示错误,但它似乎也在调用processfailed.php (我不希望在这种情况下调用任何php文件)。

如果我向一个字段提供有效的数据,而另一个字段为空,这似乎是可行的。

如果我向一个字段提供有效的数据,而将无效的数据提供给另一个字段,这似乎是在应该调用processfailed.php时调用process.php (只要一个字段是有效的,这是可以的)。

如果我向这两个字段提供无效的数据(它们都失败了验证),那么processfailed.php似乎应该被调用。

因此,如何处理两个字段都为空(不调用任何php文件),以及如果一个字段有效,而另一个字段调用process.php而不是processfailed.php。

任何建议都很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-07 04:52:39

对于两个字段都为空的第一个条件,只需在invalidHandler方法中放置一个if-语句即可。

为了在其中一个字段有效时不对另一个字段应用验证,可以使用规则的depends属性。

代码语言:javascript
运行
复制
$("#my_form").validate({
    rules: {
        fieldOne: {
            require_from_group: [1, '.datagroup'],
            maxlength: {
                param: 2,
                depends: function(element) {
                    var valTwo = $('#fieldTwo').val();
                    return !valTwo || (valTwo.length < 8);
                }
            }
        },
        fieldTwo: {
            require_from_group: [1, '.datagroup'],
            minlength: {
                param: 8,
                depends: function(element) {
                    var valOne = $('#fieldOne').val();
                    return !valOne || (valOne.length > 2);
                }                
            }
        }
    },
    submitHandler: function (form) {
        alert("process");
        return false;
    },
    invalidHandler: function (event, validator) {
        if ($('#fieldOne').val() || $('#fieldTwo').val()) {
            alert('processfailed');
        } else {
            alert('empty');
        }
        return false;
    }
});

小提琴

我删除了groups属性,因为它会导致所有消息显示在第一个字段的旁边,当消息违反minlength规则时,这似乎不正确。

注意:invalidHandler函数的第一个参数是事件对象,而不是表单元素,但是可以使用event.target获取表单元素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30688769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档