3

私は検索フォームを持っています:

<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が定義され、トリガーされます。

4

2 に答える 2

1

jsでこのようなことを試すことができます

<form onsubmit="clearForSubmit(); return false;">

これはフォームを送信しません。フォームをクリアした後にフォームを送信できます

form_name.submit();
于 2012-05-12T01:27:40.033 に答える
0

onclickの代わりにイベントを使用しonsubmit、関数の最後にあるフォームをコードで送信します。

于 2012-05-11T14:50:20.330 に答える