私は次のような状況に陥っています。ボタン:フォームが提出されたときにアクティブは適用されません
2つのフィールドと送信ボタンを持つ単純なフォームです。 Submitボタンは、:active
疑似クラスを使用してスタイルされ、押されるたびに赤色になります。
ボタンがフォーカスされている場合は、ボタンを直接クリックするか、Space
キー(Chromeのみ)を押した場合のみ動作します。
ただし、Enterキーを使用してフォームを送信すると、ボタンは「アクティブ」状態になりません。ボタンにフォーカスがあってもEnter
を押すと、スタイルされません。ここでは例
document.getElementById("form1").addEventListener("submit", function(e) {
e.preventDefault();
document.getElementById("log").innerHTML += "Form submitted<br/>" ;
\t
return false;
});
buttonClick = function() {
document.getElementById("log").innerHTML += "Button clicked<br/>" ;
}
button {
background: yellow;
}
button:active {
background: red;
}
<form id="form1" >
First name:<br>
<input type="text" name="firstname" value="Mickey">
<br><br>
<button type="submit" onclick="buttonClick()">Submit</button>
<br><br>
<div id="log"></div>
</form>
一つは、実際にフォームがボタンが押されずに送信されるので、それはだと言うことができます。しかし、それは本当ではない、ボタン自体のクリックイベントが好きな形でフォームを送信することができます。
これはバグですか、何か間違っていますか?
注:<input type="submit">
と<button type="submit"></button>
あなたがactive
状態/クラスが使用されていることを確認したい場合は、この場合に
注:マルチボタンマウスを搭載したシステムでは、CSS 3は:active疑似クラスをプライマリボタンにのみ適用する必要があります。これは通常、左端のボタンです。ソース:https://developer.mozilla.org/en/docs/Web/CSS/:active – floor
'active'のみ... well * active * while * mousedown *ユーザーがマウスボタンを押してから開始するまでの時間を意味しますマウスボタンが放された時刻を表示します。キーダウンは、キーを押しているユーザーの時間に基づいて異なるイベントです。 http://stackoverflow.com/a/32485497/2813224 – zer00ne
@floor私の解釈では、CSSレベル3仕様(セクション6.6.1.2)は、プライマリ以外のマウスボタンはボタンをアクティブ化してはならず、他の方法を禁止していないとしか言いませんマウスを持っていても: "複数のマウスボタンがあるシステムでは、:アクティブは、プライマリまたはプライマリのアクティベーションボタン(通常は"左 "マウスボタン)とそのエイリアスにのみ適用されます。 (https://drafts.csswg.org/selectors-3/#useraction-pseudos)しかし、明らかにFirefoxはあなたがそれを引用したのとまったく同じです。 – Andrej