多くの場合、フォームを美しくするために、送信ボタンが画像に置き換えられます。ただし、細部に注意を払わないと、フォームが繰り返し送信され、データベース レコードが繰り返し挿入されるなど、説明のつかないエラーが発生します。 次の簡単なフォーム コードを見てみましょう。 コードをコピー コードは次のとおりです。<form id="loginform" name="loginform" action="upload/2022/web/<input type=image src=login.gif" name="imagesubmit" /> </フォーム> このコードは正しいので、重複送信の問題は発生しません。 「<input type="image">」は実際には「<input type="SUBMIT">」と同じ機能を持ちます。画像をクリックすると、submit() 操作が実行されます。 しかし、確信が持てない人もいるため、次のようなコードで画像に onclick アクションを追加します。 コードをコピー コードは次のとおりです。<form id="loginform" name="loginform" action="upload/2022/web/<input onclick=document.loginform.submit() type=image src=login.gif" name="imagesubmit" /> </フォーム> 画像ボタンを 1 回クリックすると、画像が 2 回送信され、重複して送信されることになります。その機能は次のものと同等です: コードをコピー コードは次のとおりです。<input type="送信" onclick="送信()"> もちろんそれは正しくありません。 onclick イベントを使用する必要がある場合は、<input type="image"> の代わりに <img> を使用できます。次のコードも正常に動作します。 コードをコピー コードは次のとおりです。<form id="loginform" name="loginform" action="upload/2022/web/<img onclick=document.loginform.submit() src=login.gif" name="imagesubmit" /> </フォーム> 私自身もこの問題に遭遇しましたが、ログイン時にユーザーが送信したグラフィック検証コードが間違っていました。考えてみてください。ユーザーが 2 回送信した場合、2 回目に送信するときに確認コードは正しいでしょうか? 2. 画像ボタンの重複送信を防ぐにはどうすればいいですか? コードをコピー コードは次のとおりです。<input type="image" src="bt.gif" onclick="submit()"> このようなボタンの重複送信を防ぐにはどうすればよいでしょうか? 解決: コードをコピー コードは次のとおりです。<input type="image" src="bt.gif" onclick="submit();this.disabled=true"> この方法では、画像ボタンを使用して重複送信を回避できますが、現在、このようなボタンが 3 つ一緒に存在しています。そのうちの 1 つを押したいのですが、3 つすべて送信できなくなりました。 解決: コードをコピー コードは次のとおりです。<スクリプト言語="JavaScript"> 関数テスト(){ i=0;i<document.getElementsByName('t1').length;i++) の場合 document.getElementsByName('t1')[i].disabled=true; } </スクリプト> <フォーム名="f1" メソッド="post" アクション="1.htm" ターゲット="_blank" onsubmit="test()"> <input type="image" name="t1" src="upload/2022/web/newtopic.gif"> <input type="image" name="t1" src="upload/2022/web/newtopic.gif"> <input type="image" name="t1" src="upload/2022/web/newtopic.gif"> </フォーム> 画像を使用してフォームを送信するには、次の 2 つの方法があります。 1.<input type="image" src="xxx.gif"> この画像は自動的にフォームを送信します。つまり、type="submit"です。送信前に判断やテストが必要な場合は、 コードをコピー コードは次のとおりです。<input type="image" src="xxx.gif" onclick="return dosubmit();"> ただし、この方法でフォームを送信すると、フォームが 2 回送信され、フォーム要素が繰り返し送信され、データベースに異常な書き込みが行われることがよくあります。 ! IE 使用時に特に問題が深刻になりますが、Firefox 使用時にはエラーは発生しません。このとき、同じ情報に対してデータベースが一意になるように設定する必要があることに注意してください。 理由: HTML での画像の説明は、「クリックするとすぐにフォームが送信される画像コントロールを作成します。」です。 2.<img alt="送信" src="xxx.gif" onclick="return dosubmit();" style="cursor:pointer;"> この提出方法は正常であり、問題はなく、効果は上記と同じです。したがって、特に Struts アプリケーションでは、最初の方法を使用してデータを送信する頻度を少なくしてください。注: css: cursor: hand は IE でのみ認識され、Firefox では認識されません。しかし、ポインタは互換性があります! 注記!どの方法で送信する場合でも、<form></form> の間に含まれている必要があります。そうでない場合、送信は無効になります。 |
<<: MySQL学習データベース操作DML初心者向け詳細解説
>>: Tinymce リッチテキストを使用して Vue のツールバーボタンをカスタマイズする実践
目次1. 前提条件1.1 サポートされているプラットフォーム1.2 jdk および hadoop...
最近、Tencent Cloudを使用してサーバーを設定しました。使用中に、tomcatポートにアク...
「どうしたの?」特定の種類のダイアログ ボックスに慣れていない限り、ダイアログ ボックスが表示された...
コードをコピーコードは次のとおりです。 <オブジェクト id="player1&qu...
MongoDB はクロスプラットフォームであり、Windows と Linux の両方にインストール...
序文この記事では主に、MySQL ストレージ テーブル エラー「java.sql.SQLExcept...
目次js 呼び出しメソッドアンドロイド1.jsはネイティブを呼び出す2. ネイティブコールjs iO...
mysql5.7.18の解凍版はmysqlサービスを起動します。具体的な内容は以下のとおりです。 1...
目次背景解決策1アイデア:コード:解決策2アイデア:要約する参照する背景日付と時間をフォーマットする...
序文説明を簡略化するために以前に設定した要件は、他のグループから MQ メッセージを受信し、データベ...
序文信じてください。この記事の 7️⃣ ステップを覚えておけば、JS の this リファレンスを完...
目次序文ホットチェンジとはCocos Hot アップデートの概要マニフェストプロジェクトリソースとゲ...
序文実際の開発では、ビジネス要件が変更されることが多いため、ストアド プロシージャの特性を変更するこ...
1. 足場とは何ですか? 1. Vue CLI Vue CLI は、Vue.js をベースにした迅速...
YSlow は、Yahoo USA が開発したページ スコアリング プラグインです。非常に優れていま...