1

「 name 」入力フィールドを持つフォームがあり、アプリケーション全体で一意である必要があります。ユーザーがフォームを保存しようとすると、Ajax呼び出しを介してチェックが行われます。ユーザーが「名前」を空のままにしてフォームを保存すると、検証エラーが発生します。この時点以降、「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({ ... });
}
4

2 に答える 2

1

validateParamsオブジェクトでonkeyupをfalseに設定します

var validationParams = {
    onkeyup:false,
    rules: {
        name: {
            required: true,
            uniqueName: true
        }
    }
};
于 2012-11-30T16:00:43.140 に答える
0

結局のところ、jQueryやJavaScriptの問題ではありませんでした。それは入れ子になったフォームの状況でした。

于 2012-12-18T17:09:54.650 に答える