jQuery仅验证远程onblur,但允许onkeyup休息

时间:2014-12-23 00:56:45

标签: javascript jquery jquery-validate

我正在尝试进行jquery远程验证以查看名称是否唯一,但我不想对每个onkekup事件进行远程验证,但是我想在blur事件上执行此操作(当用户离开文本框)。但是使用下面的当前代码,按下第二个字符后它会激活。我想继续将其余的规则激发onkeyup,如需要,minlength和其他元素的规则。 是否只有单一规则才能控制此行为的属性?我注意到整个表单的默认设置。

  elem.validate({
        ignore: "",
        rules: {
            name: {
                required: true,
                minlength: 2,
                maxlength: 60,
                remote: {
                    url: "/api/IsUniqueName",
                    onkeyup: false,
                    type: "get",
                    contentType: "application/json",
                    data: {
                        name: function () {

                            return elem.find('input[name^=Name]').val();
                        }
                    },
                    headers: {
                        RequestVerificationToken: Indexreqtoken
                    },
                }
            },
            ...

1 个答案:

答案 0 :(得分:4)

您无法将onkeyup选项放在remote规则中......这不是remote方法的工作方式。 The remote method只能接受与jQuery .ajax()相同的选项,而不能接受任何其他选项。

但是,您无法在“按规则”的基础上限制或控制触发事件。这些事件是针对整个表单捕获的,也可以是在每个字段上单独捕获的,它们不能局限于特定的规则。

如果您想将插件的onkeyup功能限制在某些字段,那么您可以在onkeyup选项中使用条件...

$('#myForm').validate({
    onkeyup: function(element, event) {
        if ($(element).attr('name') == "name") {
            return false; // disable onkeyup for your element named as "name"
        } else { // else use the default on everything else
            if ( event.which === 9 && this.elementValue( element ) === "" ) {
                return;
            } else if ( element.name in this.submitted || element === this.lastElement ) {
                this.element( element );
            }
        }
    },
    ignore: [],  // <- note the proper format for the "ignore nothing" setting.
    rules: {
        name: {
            required: true,
            minlength: 2,
            maxlength: 60,
            remote: {
                url: "/api/IsUniqueName",
                ....

修改

引用OP

  

“是否没有控制此行为的属性,仅针对单一规则?”

不,不能在“按规则”的基础上控制触发事件。它们只能控制整个表格或特定领域,如上所示。

https://stackoverflow.com/a/21313848/594235