1

ボタンをクリックするとnyroModalウィンドウにポップアップするフォーム(signup.php)があります。

<input value="Edit" class="nyroModal" type="button" href="signup.php">

フォームを送信する前に、何らかの形式のAJAX検証(たとえば、ユーザー名が取得されているかどうかを確認するため)を使用したいと思います。

私は次のことを念頭に置いていました:ユーザーが「送信」ボタンをクリックしたとき。onClick必要なフィールドをPHPスクリプトに送信するjavascript関数を呼び出し、フィールドが有効かどうかを返します。次に、フィールドが無効な場合はユーザーに通知しますが、フィールドが有効な場合は、などを介してフォームを送信し$('#formid').submit();ます。理論的には十分簡単です。

しかし

問題は、nyroModelがURLから新しいフォームを取得し、その内容を含むDIVをDOMに作成するときに、Firefoxが<script>タグを完全に無視することです。Firebugを使用すると、実際に<script>応答付きのタグを取得していることがわかりますが、Firefoxはそれらを無視します。また、ドキュメントの作成時にフォームがDOMにまだ存在していないため、モデルの呼び出し元のページにjQuery関数を作成できません。

これを解決する方法はありますか?

4

2 に答える 2

1

フォームに送信ハンドラーを追加してみてください。

onClick='return frmSubmit()'

このハンドラーでは、最初にフォームのデータをシリアル化し、これを検証スクリプトに送信します。return false非同期で行われるため、リクエストを発行した後は必ず確認してください。応答コールバックでは、次のように実装します。入力が有効であることを応答が示している場合は、.submit()-methodを使用してプログラムでフォームを送信します。ただし、応答が何かが間違っていることを示している場合(JSON形式でフィードバックを提供する必要があります)、ユーザーが読めるように建設的なフィードバックをフォームに添付します。

keypressイベントをキャッチすることを忘れないでください。また、Enterキーが押されたときにフォームが送信されないようにしてください。これにより、検証機能がバイパスされます。

そして、うーん、1つの提案:最初にクライアント側ですべての検証を行う方が良いかもしれません。これは通常は十分です。クライアント側の検証を回避できると聞いたことがあると思いますが、サーバー側のチェックは依然として必要です。しかし、ユーザーがシステムを真剣にいじることを決心した場合、建設的なフィードバックを提供する必要はないと常に感じています。失敗を示す簡単なメッセージで十分です。したがって、最初にプレーンJavascriptで入力を確認します。何か問題がある場合は、フィードバックを提供してください。ただし、サーバーが無効な入力を受け取った場合(つまり、クライアント側の検証がバイパスされた場合)、ユーザーに失敗したことを通知するだけです。

于 2009-08-27T10:46:11.520 に答える
0

次のようなものを使用できます:

onClick='javascript: return myValidationFuncion()

関数が値が有効かどうかをチェックする場所。つまり、そこでWebサービスを呼び出します。値が有効でない場合は、実行を停止するために単にfalseを返します。

K

于 2009-08-27T10:26:57.830 に答える