2

私は自分のライブラリの問題をトラブルシューティングしていましたが、それは Opera の動作に関連するものに要約されます。現在、この問題に関する大きな警告はどこにも見つかりませんでした。そのため、何かが欠けているか、私が知らない回避策があると推測しています。

具体的には、次のような単純なコードを使用します。

<input type="number" id="myNumber" />

Opera 12.16 では、input type=number がサポートされているため、type=number 入力が正しく表示されます。

ユーザーが「123」などの有効な値を入力すると、次のようになります。

var myInput = document.getElementById('myNumber');
myInput.value // => "123"
myInput.validity // => { valid: true, typeMismatch: false, ... }
myInput.validity.badInput // undefined

ここで、ユーザーが「123a」と入力すると、次のようになります。

var myInput = document.getElementById('myNumber');
myInput.value // => ""
myInput.validity // => { valid: true, typeMismatch: false, ... } -- why valid: true?
myInput.validity.badInput // undefined

さらに:myInput.willValidate返品truemyInput.checkValidity()返品trueも。

では、このバージョンの Opera で input type=number の不正な入力を実際に確認するにはどうすればよいでしょうか? (空の文字列は有効な入力であると考えてください。)

4

1 に答える 1

2
element.focus();
document.execCommand("SelectAll");
window.getSelection().focusNode.selectionStart;

入力に入力されたテキストの長さを返します。これを使用すると、空の入力と無効な値を区別できます。タブの例外を追加することを忘れないでください。

于 2014-12-21T21:08:25.293 に答える