ホームページ > ウェブフロントエンド > jsチュートリアル > さまざまなブラウザがキャリッジ リターン送信フォームを処理する方法_JavaScript スキル

さまざまなブラウザがキャリッジ リターン送信フォームを処理する方法_JavaScript スキル

WBOY
リリース: 2016-05-16 18:34:40
オリジナル
1146 人が閲覧しました

条件は次のとおりです:
IE および Firefox の場合
1.
タイプの「action」フィールドが必要です。 ="送信" "。
Chrome および Safari では
最初の条件を満たすだけです。 (注1)
そのため、送信動作を制御したい場合(例えば、送信前に必須フィールドが入力されているかどうかを確認するなど)、「input」の後にJavascript「onXXX(onClickなど)」を追加することができます。 " の type="submit" イベント。関連フィールドを検出するために非同期対話を使用する必要がある場合、それは無効になります。 return false は onreadystate= のサブ関数であるため、グローバルな状況を制御しません。このとき、

の「onsubmit」属性を使用する必要があります(注2)。例:
HTML

コードをコピー コードは次のとおりです。

< form name=" form1" id="form1" action="act.php" method="post" onsubmit="myfn();return false;">

myfn() は自己定義関数: 送信方法に関係なく (「Enter」を押すか、(type="button" ではなく) type="submit" で「input」ボタンをクリックするなど)、この関数はトリガーされます。したがって、type="submit" の "input" の後に Javascript イベント "onXXX" を追加する必要はありません。送信方法 (onClick など) を制御するつもりがない限り、「onsubmit」で直接制御する方が直感的で統一されています。
最後に false を返すということは、このフォームを送信しないことを意味します。フォームを送信するステートメント document.form1.submit() は、myfn() の選択条件の分岐として使用できます。

概要:
このように、 には「action」属性と「onsubmit」属性があり、type="submit" の「input」送信ボタンがあります。どのブラウザでも (不可能ですか? フィードバックをお寄せください)、「Enter」キーとマウスを使用して、フォームの関連フィールドを非同期 (Ajax) および同期 (プレーン Javascript) でチェックして送信できます。
その他:
1. 関連フィールドを非同期的に検出するために type="button" を使用するとどうなるでしょうか。
このように、この「入力」にはイベントトリガーが必要です。 IE および FF では、テキスト ボックスで直接「Enter」を押してフォームを送信することはできません。必要に応じて、ユーザーが何を押したかを監視し、応答する追加機能を使用する必要があります (注 3)。さらに悪いことに、Ch と Sa では、type="submit" ボタンの有無は無視され、フォームは "action" 属性に基づいて直接送信されます。このように、期待される検出は達成されません。さらに厄介な結果が生じる可能性があります。
2. 「action」属性を記述せず、フォームを非同期で直接送信した場合はどうなりますか?
このように、フォームを検出するだけでなく非同期に送信する場合、この属性は必要ありません。そしてそれはまだ冗長です。これによりユーザー エクスペリエンスが向上するのであれば、そうしない理由はありません。ふふ。
【コメント】
1 IE8、FF、Chで動作確認済み。 Opera と Sa はテストされていません。
コードをコピー コードは次のとおりです:

Chrome は、次を押すとフォームの送信をトリガーします。
形式の Enter キー IE または Firefox で Enter キーを押し、js を使用して ajax 検証に成功すると、ログイン ポートがリダイレクトされます。 ユーザーがユーザー パスワードを入力すると、ajax がフォームに入力されます。現時点では、IE も Firefox もフォームを送信しません。また、今後 ajax を使用する場合、Chorm と Safari はこの時点で入力されたすべてのフォームを送信します。


2 この記事


コードをコピーしてくださいコードは次のとおりです。
Chrome ブラウザでフォームを送信するには Enter キーを使用しないでください
以前、フォーラムに次のような投稿を投稿しました。

「Chrome では」ブラウザ
Enter キーを変更するか、無効にすることができます。 " この問題は結局解決策がありません

この問題は、フォームを送信するために Enter キーを押さないようにするために発生しました。現在、問題は解決されています。実際には、フォーム操作の送信イベント

onsubmit="MySubmit();return false;" を考えなかった自分を責めているだけです。 >MySubmit() は、送信時の判断に使用できます。たとえば、別の非表示のフォームを使用して、カスタマイズされた送信タスクを完了できます。

この問題は少しわかりにくいですが、Chrome で Enter イベントを変更するのは簡単ではありません。知識のある方は教えてください。


3 過去記事参照
IE と FF で KeyCode を同時に取得
以前は IE8 で Web サイトをテストしていましたが、Ajax を含むコードの一部が誤動作し、 Firefox とそのプラグイン Firebug は、FF が wi​​ndows.event イベントをサポートしていないことを発見しました。そこで私は考えを変えました。
HTML

JavaScript
コードをコピーします コードは次のとおりです。

function submit1(e){
var isie = (document.all) ? true : false; //IE カーネルか Mozilla かを判断します。
if (isie)
key = window.event.keyCode;//IE は windows.event イベントを使用します
else
{
key = e.that;//3 つのキー関数にはデフォルトの隠し変数があり、ここでは e で渡されます。 e.これは、Mo カーネルにインデックス値を与えます (注 1)
}
if(key==13)
send1('loginemail','loginpsw');// トリガーされたイベントはカスタマイズできます
}

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート