<p><code>Onkeydown</code> で、次の JavaScript を実行します。</p>
<pre class="brush:php;toolbar:false;">function ThisOnKeyDown(el) {
if (el.title == 'textonly') {
!(/^[A-Za-zÑñ-s]*$/i).test(el.value) ? el.value = el.value.replace(/[^A-Za-zÑñ-s]/ig, '') : ヌル;
}
if (el.title == 'numbersonly') {
!(/^[0-9]*$/i).test(el.value) ? el.value = el.value.replace(/[^0-9]/ig, '') : null;
}
if (el.title == 'textandnumbers') {
!(/^[A-Za-zÑñ0-9-s]*$/i).test(el.value) ? el.value = el.value.replace(/[^A-Za-zÑñ0-9-s ]/ig, '') : null;
}
}</pre>
<p>これら 3 つのタイトル属性の 1 つが、ページ上の各入力フィールドに割り当てられます。このコードは無効な文字が正しく削除されている限り機能しますが、次の文字が入力されるまでは機能しません。無効な入力を単純に拒否する方法を見つけたいと考えています。ご協力いただきありがとうございます! </p>
<p><strong>編集</strong>: グローバルにイベントを作成しています。これが私がやったことです:</p>
<pre class="brush:php;toolbar:false;">function Globalization() {
var inputs = document.getElementsByTagName('input');
for (i = 0; i
上のコードはこれを示しています - 数字のみが許可されています。この BACKSPACE
のような例外を追加することで変更できます。 リーリーそもそも設定されないようにするには、keydown イベント ハンドラーで false を返し、イベントがさらに伝播するのを防ぎます。
以下の例は jQuery を使用して作成しましたが、従来のバインディングでも同じ関数を使用できます。
サーバー側の検証も重要ですが、使いやすさを考えるとクライアント側の検証も重要です。
リーリー