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

ただ、条件として、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回まで
  • 13歳以上
  • 登録:2013/01/06 01:37:20
  • 終了:2013/01/12 22:44:24

ベストアンサー

id:oil999 No.3

oil999回答回数1728ベストアンサー獲得回数3202013/01/06 10:25:10

ポイント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

nobuoka回答回数9ベストアンサー獲得回数52013/01/06 02:49:47

実際に 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

yoshioms回答回数14ベストアンサー獲得回数42013/01/06 08:18:32

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

id:yayayai

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

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

oil999回答回数1728ベストアンサー獲得回数3202013/01/06 10:25:10ここでベストアンサー

ポイント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

taroe回答回数1099ベストアンサー獲得回数1322013/01/11 11:10:39

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

に変更してみては?

id:mahosuto No.5

otusoham回答回数789ベストアンサー獲得回数282013/01/12 22:25:17

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

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

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

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

トラックバック

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません