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

标签 javascript jquery jquery-validate

<分区>

我正在尝试进行 jquery 远程验证以查看名称是否唯一,但我不想对每个 onkekup 事件进行远程验证,但是我想在模糊事件(当用户离开文本框)。但是使用下面的当前代码,它会在按下第二个字符后启动。我想继续让其他规则在 onkeyup 上触发,例如 required 和 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
                    },
                }
            },
            ...

最佳答案

您不能将 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:

"is there not a property to control this behavior, just for single rule?"

不,触发事件不能在“每条规则”的基础上进行控制。它们只能针对整个表单或特定字段进行控制,如上所示。

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

关于javascript - jQuery 仅验证远程 onblur 但允许 onkeyup 休息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27612695/

相关文章:

javascript - axios promise 未解决,始终处于待处理状态

没有表单标签的 jQuery 验证

javascript - 单击 Fabric.js Canvas 时如何获取图像的 src?

javascript - 使用 $.delegate() 在命名空间中选择元素

javascript - jQuery验证成功后用ajax提交表单

javascript - jQuery 验证 : Validate that one field, 或一对的两个字段都是必需的

javascript - 涟漪效果CSS | ipad native 应用程序

javascript - 启动弹出按钮脚本

javascript复制元素值,其中元素名称有句点

javascript - 隐藏/显示文本而不是图像