検索ボタンを押下時に、入力値をチェックして不正だったら、フォーム送信を中断したいです。

ただ、条件として、submitボタンは画像である必要があります。
そこで、以下でやろうとしましたが、以下ですと、
//php
echo $form->submit('img.jpg', array('type' => 'submit','onClick' => 'aaa();','div' => false,'alt' => '検索'));
//出力されるソース
<input type="image" src="/img/img.jpg" onclick="aaa();" alt="検索">

上記の場合、問題なのが、入力後すぐに検索ボタンをクリックすると、
blurイベント→submitの順で処理がされるので、return false を設定しても処理を中断しません。

なにかよい別案ないでしょうか。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/01/12 22:44:24
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:oil999 No.3

回答回数1728ベストアンサー獲得回数320

ポイント100pt

php側でFORMにsubmitしているので順序が入れ替わってしまいます。
入力値のチェックはJavaScriptで行い、JavaScript内で下記のようにsubmitを発行してください。
http://www.confrage.com/javascript/form/form_submit/form_submit.html

id:yayayai

いつもありがとうございますっ

2013/01/12 22:43:41

その他の回答4件)

id:nobuoka No.1

回答回数9ベストアンサー獲得回数5

実際に submit の処理はどこで行われるのか (input 要素の onclick イベントハンドラとして設定されている aaa という関数は何をするのでしょうか?) や、『blurイベント→submitの順で処理がされるので、return false を設定しても処理を中断しません』 という部分などがよくわからないのですが、とりあえず参考になりそうなことを書いておきます。

form の submit に関する文書 を読むと、submit の処理の中で submit イベントが発生し、それがキャンセルされると submit の処理はそこで abort されると書かれています。

If the submitted from submit() method flag is not set, then fire a simple event that bubbles and is cancelable named submit, at form. If the event's default action is prevented (i.e. if the event is canceled) then abort these steps.

4.10.18.3 Association of controls and forms ? HTML Standard

なので、form 要素の submit イベントに対してイベントリスナを設定して、イベントリスナの中で入力値をチェックし、不正であったならばイベントをキャンセルすればよいのではないでしょうか? サンプルコードを書きましたので参考にしてください。

id:yoshioms No.2

回答回数14ベストアンサー獲得回数4

aaaでバリデーション処理があって、return falseしてるってことでしょうか?
onclick="return aaa()"
でもダメですか?

id:yayayai

ありがとうございましたっ

2013/01/12 22:43:24
id:oil999 No.3

回答回数1728ベストアンサー獲得回数320ここでベストアンサー

ポイント100pt

php側でFORMにsubmitしているので順序が入れ替わってしまいます。
入力値のチェックはJavaScriptで行い、JavaScript内で下記のようにsubmitを発行してください。
http://www.confrage.com/javascript/form/form_submit/form_submit.html

id:yayayai

いつもありがとうございますっ

2013/01/12 22:43:41
id:taroe No.4

回答回数1099ベストアンサー獲得回数132

onclick="aaa();"を
onclick="aaa();return false;"

に変更してみては?

id:mahosuto No.5

回答回数789ベストアンサー獲得回数28

http://jsfiddle.net/nobuoka/e6TAq/

こちらはどうでしょうか。

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません