0

私は非常にシンプルなフォームを持っていて、その中には2つの小さなボタンしかありません。あるタイプ:非表示別のタイプ:画像。セマンティック構造:

<form id = "whatever" method = "post" action = "<?php echo $self; ?>" >  
<input type = "hidden" value ="whateverelse">
<input type = "image" src="www.someweburl.com/resource.gif" id="notsubmit">
</form>

本来の形で見栄えがします。問題は、画像ボタンをクリックすると、実際にポストバックが行われることです。実際には送信ボタンではないため、送信が行われる理由がわかりません。私は実際に送信することを計画しているので、次のようなことを行うjqueryハンドラーを用意します。

$('#notsubmit').submit(function(event) {

event.preventDefault();
// do my business logic
// make some food 
// whatever else I want to do
$('#whatever').submit();

});

それについてです。問題は、送信ハンドラー内でコードを実際に実行しなくても送信が発生することです。送信機能をコメントアウトしましたが、それでも送信します。

何か案は?

4

2 に答える 2

2
$('#notsubmit').click(function(event) {
    // do my business logic
    // make some food 
    // whatever else I want to do
    $('#whatever').submit();
    return false;
});
于 2013-03-26T17:21:52.117 に答える
2

実際には送信ボタンではないため、送信が行われる理由がわかりません。

送信ボタンです。タイプに関するHTML仕様を引用します。image

グラフィカルな送信ボタンを作成します。属性の値はsrc、ボタンを装飾する画像のURIを指定します。アクセシビリティ上の理由から、作成者は属性を介して画像の代替テキストを提供する必要がありaltます。


問題は、送信ハンドラー内でコードを実際に実行しなくても送信が発生することです。

これは、submitイベントがボタンでトリガーされることはなく、ハンドラーが実行されることも、デフォルトのアクション(フォームの送信)が妨げられることもないためです。click代わりに、イベントハンドラーをボタンにバインドする必要があります。

$('#notsubmit').click(function(event) {
    event.preventDefault();
});

イベントは要素submitでのみトリガーされます。form

于 2013-03-26T17:22:42.997 に答える