Jquery 在初始验证失败后,如何防止每次击键时激活验证方法?

Jquery 在初始验证失败后,如何防止每次击键时激活验证方法?,jquery,jquery-validate,Jquery,Jquery Validate,我有一个带有“name”输入字段的表单,它对于整个应用程序来说应该是唯一的。当用户试图保存表单时,检查通过Ajax调用进行。如果用户将“名称”留空,然后保存表单,则随后将出现验证错误。在这一点之后,“name”字段的每一次击键都将导致Ajax调用。如何预防 HTML: <input type="text" name="name" value="${Name}" /> var validationParams = { rules: { name: { requ

我有一个带有“name”输入字段的表单,它对于整个应用程序来说应该是唯一的。当用户试图保存表单时,检查通过Ajax调用进行。如果用户将“名称”留空,然后保存表单,则随后将出现验证错误。在这一点之后,“name”字段的每一次击键都将导致Ajax调用。如何预防

HTML

<input type="text" name="name" value="${Name}" />
var validationParams = {
  rules: {
    name: {
      required: true,
      uniqueName: true
    }
  }
};

...

$.validator.addMethod("uniqueName", uniqueNameFn, 'error msg');

...

saveBtn.on('click', save);

...

function save() {
  templateRegion.find(form).validate(validationParams);
  if (!templateRegion.find(form).valid()) return;

  $.ajax({ ... });
}

// FIRES ON EVERY KEYSTROKE IF 'required' VALIDATION INITIALLY FAILS
function uniqueNameFn(value, elemChanged) {
  $.ajax({ ... });
}

在validationParams对象中将onkeyup设置为false

var validationParams = {
    onkeyup:false,
    rules: {
        name: {
            required: true,
            uniqueName: true
        }
    }
};

在validationParams对象中将onkeyup设置为false

var validationParams = {
    onkeyup:false,
    rules: {
        name: {
            required: true,
            uniqueName: true
        }
    }
};

归根结底,这不是jQuery或JavaScript的问题。这是一个嵌套表单的情况。

说到底,这不是jQuery或JavaScript的问题。这是一个嵌套表单的情况。

您可以启动一个
setTimeout
函数,检查用户在开始键入时经过一定时间后是否停止键入,然后可以进行检查。您可以将一些值设置为“isValid”为false,并在以下情况下启动下一次!ISU可以使用event.preventDefault()或只返回提示。。。我会将
.validate()
行移到
保存
函数之外
.validate()
用于初始化
表单
,这只需要在DOM就绪时发生一次。您可以启动一个
setTimeout
函数,检查用户从最初开始键入时起经过一定时间后是否停止键入,然后可以进行检查。您可以将一些值设置为“isValid”为false,并在以下情况下启动下一次!ISU可以使用event.preventDefault()或只返回提示。。。我会将
.validate()
行移到
保存
函数之外
.validate()
用于初始化
表单
,只需在DOM就绪时执行一次。