如何在初始验证失败后阻止验证方法在每次击键时触发?

时间:2012-09-14 17:20:31

标签: jquery jquery-validate

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

HTML

<input type="text" name="name" value="${Name}" />

JS

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({ ... });
}

2 个答案:

答案 0 :(得分:1)

在validationParams对象中将onkeyup设置为false

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

答案 1 :(得分:0)

在一天结束时,它不是jQuery或JavaScript问题。这是一种嵌套形式的情况。