10

これは従来のログイン フローです。ユーザーは「新規ユーザー」または「既存ユーザー」を選択できます。ユーザーが新しい場合は、ログイン ボックスの名前をサーバーに対して検証して、ユーザー名が一意かどうかを確認する必要があります。既存のユーザーの場合は、ユーザー名が既に取得されていることが予想されるため (もちろん)、このチェックはスキップされます。

ビューモデルに [Remote] 属性を追加し、新規/退出ユーザー用のラジオボタンを「追加フィールド」として追加しました。このようにして、リモート検証は、既存のユーザーの場合は true を返し、そうでない場合はデータベースをチェックして、ユーザー名が使用されているかどうかを確認します。

ユーザー名を入力した後 (そしてリモート検証が実行された後)、ユーザーがラジオボタン (新規/既存) を変更することを決定した場合を除いて、これはうまく機能します。リモート検証は、ユーザー名が変更された場合 ([Remote] 属性を持つプロパティ) にのみ自動的に実行されるため、ラジオボタンのみを変更しても、再度実行されることはありません。

だから私の問題は、リモート検証を強制的に再度実行するにはどうすればよいですか? ユーザー名入力フィールドで変更/フォーカス/ぼかしイベントをトリガーして通常のハックを試みましたが、呼び出しはトリガーされません。ラジオボタンに同様の [Remote] を追加することを検討しましたが、同じ絶対位置に配置された 2 つの同じように見えるエラー メッセージにより、事態が非常に複雑になります。

再検証をトリガーする方法はありますか?

4

1 に答える 1

19

$("#formID").validate() を使用してjquery検証をトリガーできると思います

さらにいくつかのオプションがドキュメントに記載されています: http://docs.jquery.com/Plugins/validationおよびBrad Wilson のブログ(コメントにもいくつかの情報があります)。

入力が持っているデータ属性を調べましたか?おそらくキャッシュされていますか? このようなもの。

編集:明確にするために、これが私がそれを機能させる方法です

$('#UserName').removeData('previousValue');
$('form').validate().element('#UserName');
于 2011-04-11T07:55:40.477 に答える