2

先行入力テキスト フィールドがあり、ユーザーが「Enter」を押したときに ajax 呼び出しを行い、同時にフォームを送信したくありません。私のhtmlは次のようになります:

<input id="drug_name" class="drugs_field" type="text" size="30" onkeypress="handleKeyPress(event,this.form); return false;" name="drug[name]" autocomplete="off"/>
<div id="drug_name_auto_complete" class="auto_complete" style="display: none;"/>
<script type="text/javascript">
  //<![CDATA[
  var drug_name_auto_completer = new Ajax.Autocompleter('drug_name', 'drug_name_auto_complete', '/sfc/pharmacy/auto_complete_for_drug_name', {})
  //]]>
</script>
4

4 に答える 4

6

何をすべきかを決定する関数を呼び出すイベント ハンドラーをフォーム自体に追加する必要があります。

<form onsubmit="return someFunction();">

そして、 someFunction() が成功時に false を返すことを確認してください。true が返された場合、フォームは正常に送信されます (これを防止しようとしています)。したがって、AJAX 呼び出しを実行して、成功したかどうかを確認し、false を返すことができます。

このようにすることで、AJAX 呼び出しが失敗した場合にフォールバックを提供し、関数から true を返すことで通常どおりフォームを送信できます。

于 2008-11-10T19:07:55.193 に答える
2

イベントをトラップしてキャンセルします。

これは、trap onSubmit(event) と event.ignoreDefault() のようなものです。イベントは、それがキーストロークによってトリガーされたことと、それがどのキーストロークによってトリガーされたかを示します。

于 2008-11-10T18:58:31.610 に答える
1

送信ボタンの代わりに、クリック時にフォームを送信する通常のボタンを使用できます。

エンターキーを他のフィールドで機能させたい場合は、そこで処理してフォームを送信してください。

于 2008-11-10T19:01:05.583 に答える
1

ボタンの入力要素で次のようにします。

<input type='submit' value='submit' onclick='submiFunction(); return false;'>

またはフォーム自体

<form blabla onsubmit='someAjaxCall(); return false;'>

フォームの送信を停止する必要があります。
return false は、フォームの送信を実際に停止するアクションです (現在のイベントである sbumit をキャンセルします)。

于 2008-11-10T19:03:42.783 に答える