ボタン/送信入力がブラウザー間で同一であることを保証する唯一の方法は、divを使用してそれらを再作成することであると結論付けました。ボタンと同じ方法でクリックイベントをdivにアタッチできるため、ボタン入力の作成は簡単です。送信入力の作成は、ほとんど難しくありません。jQueryを使用して、たとえば「submit」などのクラスを宣言し、ロード時にそのクラスを持つすべての要素に送信ボタン機能を追加することで、これを解決しました。ここに例があります:
// On page load:
$('.submit').on('click', function(e) {
$(this).closest('form').submit();
});
フォームにない送信クラスを持つDivは、クリックしても何もしません。
tabindex="n"
要素に(数字は)追加するn
と、通常のボタンと同じように、タブを使用してフォーカスを合わせることができます。:focus
また、 css疑似クラスを使用して、フォーカスされていることを示すようにスタイルを設定することもできます。次に、スペースを使用するか、Enterキーを押して、このイベントハンドラーでボタンをクリックします。
$('.submit').on('keypress', function(e) {
if (e.keyCode == 13 || e.keyCode == 32)
$(this).closest('form').submit();
});
(私は急いでその最後のスニペットを書きましたが、実際にはテストしていません。エラーを見つけたり、テストに成功した場合は、それに応じてこの回答を編集してください。)