最初にプラス/マイナス記号を許可し、その後に html のテキスト フィールド入力で 1 つのドットのみを許可する 10 進数を許可する必要があるという要件があります。
基本的に、テキスト フィールドは通常の整数と 10 進数、および負の整数と負の 10 進数を許可する必要があります。プラス記号とマイナス記号は先頭 (最初の文字) にのみ使用でき、オプションです。また、任意の数の小数点以下の桁数 (例: -12.12345 など) を許可する必要がありますが、エントリ内の小数点 (ドット) は 1 つだけです。
使用できる数字は、1、+ 1、-1、.1、+1.1、-1.1、-.12、+.12、123.4456、-123.345、+123.345 などです。
どんな助けでも大歓迎です。
上記の要件に対して、以下の正規表現を使用しています。
var integerOnly = /[\+\-0-9\.]/g;
以下のスクリプト(わずかに変更して他のスレッドから取得したもの)を検証します。
function restrictInput(myfield, e, restrictionType, checkdot){
if (!e) var e = window.event
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
var character = String.fromCharCode(code);
alert("1 " + character);
// if user pressed esc... remove focus from field...
if (code==27) { this.blur(); return false; }
//alert("2");
// ignore if the user presses other keys
// strange because code: 39 is the down key AND ' key...
// and DEL also equals .
if (!e.ctrlKey && code!=9 && code!=8 && code!=36 && code!=37 && code!=38 && (code!=39 || (code==39 && character=="'")) && code!=40) {
alert("3");
if (character.match(restrictionType)) {
alert("4");
if(checkdot == "checkdot" & '-' != character & '+' != character){
alert("5");
return !isNaN((myfield.value.toString()==''? '0':myfield.value.toString())+character );
} else {
return true;
}
} else {
return false;
}
}
}
スクリプトの呼び出し方法は次のとおりです。
<input type="text" id="db" width="3" value="" onkeypress="return restrictInput(this, event, integerOnly, 'checkdot');"/>
次のようないくつかのケースを除いて、正常に機能します。
- +/- 任意の場所を何度でも許可します。私の要件は、最初だけ許可することです。
以下のように正規表現を変更しようとしました。
var integerOnly = /[\+\-]?[0-9\.]/g;
その場合は、式に一致しません。アラート 4 には達していません。
1 つのことは、小数点以下 1 桁のみが許可され、1 桁までしか許可されないことです。
誰かが正規表現を変更して、最初に +/- のみを許可し、一度だけ許可するのを手伝ってもらえますか?
ありがとうございました。