-1

必須フィールドを検証するためのJavaScriptを含むフォームと、ポップアップウィンドウにPHPサーバーメッセージを強制的に表示する別のフォームがあります。

また、javascript が無効になっている場合に備えて、サーバーに php バリデーターがあります。

JavaScript バリデーターにメッセージがない場合、ポップアップ機能が機能するようにします。

現在、必須フィールドを空のままにすると、javascript バリデーターからのメッセージと、php 検証メッセージを含むポップアップ ウィンドウが表示されます。

form action="http://myserver.com/formmail.php" method="post" name="SampleForm"  onsubmit="return (validateForm() || createTarget(this.target)" target="formtarget")"

私が明確だったかどうかはわかりません...助けはありますか?ありがとうございました!

4

1 に答える 1

0

私が解決できる限り、あなたの要件は、送信時にvalidateForm()最初に関数を呼び出し、それが返された場合はfalse処理を停止して送信を停止することです。それ以外の場合は をvalidateForm()返しtrue、呼び出しcreateTarget()て送信を続行できるようにします。これは、OR 条件の代わりに AND を使用することで実現できます。つまり、&&代わりに を使用し||ます。

onsubmit="return (validateForm() && createTarget(this.target));"

)外側の括弧はまったく必要ありませんが、終了が欠落していることに注意してください。

onsubmit="return validateForm() && createTarget(this.target);"

コードが機能しなかった理由||は、左側のオペランドがfalse(または偽) である場合、右側のオペランドが評価され、式全体の結果が右側のオペランドの値になるためです。左側のオペランドがtrue(または真である) 場合、右側のオペランドはまったく評価されません。したがってvalidateForm()、検証エラーがあったために false が返された場合でも、関数は呼び出され、送信createTarget()以外の値が返された場合は続行されます。false

(もちろん、エラーがなければ、エラーがあればvalidateForm()戻ると仮定しています。)truefalse

詳細については、JavaScript の論理演算子を参照してください。

于 2012-11-21T03:22:52.710 に答える