私は検索フォームを持っています:
<form class="searchForm" id="topSearchForm" action="/search.ds">
onsubmit-eventがアタッチされており、JavaScriptがトリガーされます。このJavaScriptの目的は、特定の基準に基づいてフォームを送信する前に、特定のフォームフィールドを空にすることです。
明確にするために、何が起こる必要があるかは次のとおりです。
ユーザー入力->ユーザーが検索ボタンをクリックする(または「Enter」を押す)->Javascriptの実行->フィールドがクリアされる->フォームが送信される
これは、IE7とIE8を除くすべてのブラウザーで意図したとおりに機能します。javascriptは実行されますが、何らかの理由で、フィールドがjavascriptによってクリアされる前にフォームの送信が行われます。これにより、送信されたページには、クリアされるはずのフィールドからのデータが含まれます。
私はUI(の特定の部分)のみを制御でき、フォームの送信後は何も処理できません。使いやすさのために、ユーザーがフォームを送信するまで、これらのフィールド(クリアする必要があります)に入力することが重要です。
IE7とIE8で内部ロジックが異なるのはなぜですか(IE9と「他のすべてのブラウザー」で正常に動作します)?この問題を回避する方法はありますか?
明確にするために、さらにいくつかのコードがあります。
イベントをフォームに添付します。
var formElement = document.getElementById("topSearchForm");
[...]
formElement.attachEvent('onsubmit', function() {clearForSubmit()});
clearForSubmitが定義され、トリガーされます。