4

jqueryuiオートコンプリート機能を使用して、ユーザーが場所を選択できるようにしています。フォームを送信する前に、オートコンプリートから場所を選択していることを確認する必要があります。値を選択する前にフォームを送信できないようにします。

私の解決策は、彼らが提出した後、見つかった値がデータベースにあることを確認することです。もう1つの解決策は、[送信]をクリックしたとき、またはロケーションボックスを離れた後、別のフィールドに移動してajax経由でエントリを送信し、エラーが表示されない場合は有効であることを確認し、フォームを送信させないことです。

もっと簡単なことがあるのか​​、それとももっとエレガントなものがあるのか​​と思っていました。オートコンプリートを機能させるには、ボックスに何かを入力できる必要があることを認識しています。これは、選択ボックスではないため、オートコンプリートから値を選択するように強制することができます。したがって、上記の解決策は行くための最良の方法。

考え?

4

3 に答える 3

3

いずれにせよ、セキュリティやその他のバグを回避するために、サーバー側のチェックを保持する必要があります。ただし、クライアント側の検証を追加して、より使いやすくすることができます。

本質的に、送信ボタンを無効にして、送信ボタンが無効になっている間にフォームの onsubmit が「false を返す」ようにすると、ユーザーがそう言うまでユーザーが送信しないようにすることができます。フォームの値が有効。

クライアント側でフォームを検証するには、すでに jquery を使用しているため、 jquery の検証プラグインを参照することをお勧めします。

于 2010-05-31T15:43:11.360 に答える
1

ユーザーがオートコンプリート エントリをクリックした場合はフラグを設定し、テキスト ボックスが変更された場合はフラグをクリアします。

于 2010-05-31T15:43:59.097 に答える
0

私がお勧めするのは、送信ボタンをまったく使用するのではなく、JavaScript でクリック イベントを添付する単純なボタンを使用することです。このようにして、ユーザーがクリックすると、必要なものをすべて検証し、自分でフォームを送信できます。

リソースの使用を最小限に抑える必要がある場合を除き、フィールドの 1 つの入力を検証するために AJAX 要求を行うところまで行く意味がわかりません。私がこれを言うのは、検証のために AJAX リクエストを実行する場合は、フォーム全体を単純に送信して、バックエンドで既に検証することができるからです。

于 2010-05-31T15:49:28.360 に答える