作業中のプロジェクトの開発をスピードアップするために、jQueryを使用してセミジェネリックフォームプラグインを作成しています。
計画では、jTemplatesテンプレートにフィールドが含まれ、プラグインはテンプレートを調べて必要な多言語リソースを見つけ、サーバーからそれらを要求し、すべてをJavaScriptオブジェクトにパッケージ化して、上のカスタム関数に渡します。 "参加する"。
フォームを偽造するときに実行する必要のある標準の「Enterキーを押したら、フォームを送信する」コードを除いて、すべてがうまく機能しています。
opts.coreElement.find('input[type=text]').keypress(function(evt) {
if ((evt.keyCode || evt.which) == 13) {
opts.coreElement.find('.saveButton').click();
}
});
問題は、Firefoxでは(少なくとも、他のブラウザはまだチェックしていません)、以前に同じ名前のテキストボックスに情報を入力したことがある場合は、フォームの履歴が表示されることです。次に、Enterキーを押してこれらの推奨値のいずれかを選択すると、フォームが送信されます。ページの最初の入力をしている場合は、あまり良くありません。実際、かなり面倒です。
明らかな解決策は、フィールドの周りにフォーム要素を挿入し、jQueryを介したこのダミーフォームの送信を停止することです。幸い、ASP.NET MVCを使用しているので、これを実行する余裕がありますが、そうでない場合はどうなりますか?プラグインがすでにフォーム内にあるかどうかを知らなかったため、プラグイン自体を保持する必要があった場合はどうなりますか?標準のWebFormsASP.NETを使用していて、各入力のリターンキーを正しい送信ボタンに手動で「ターゲティング」する必要がある場合はどうなりますか?
おそらくイベントオブジェクト自体を介して、キー押下のコンテキストを検出し、フォーム履歴アイテムの選択を除外できるようにする方法はありますか?