-4

入力フィールドの範囲を -100.0 から 100.0 に設定する最も効率的な方法は何ですか? 全キャラチェックしたい。-、0、1、2、3、4、5、6、7、8、9 および 以外の文字。許可されていません。浮動小数点のない値、たとえば 78 も可能です。

アップデート

IE のソリューションが必要なため、type="range" または type="number" を使用した html5 ソリューションは役に立ちません。私が持っている唯一のコードは入力フィールドです:

<input type="text" id="zahlenwert" value="" />

問題は、onKeydown() ですべての文字をチェックする必要があるのか​​、それとももっとスマートな方法があるのか​​ということです。

4

3 に答える 3

0

これは私が望んでいた解決策です:

$(document).ready(function() {
$("input#zahlenwert").keyup(function(){
    var zahlenwert= $("input#zahlenwert").val();
    var status = 0;

    for(i=zahlenwert.length;i>0;i--){
        if(status==0){
            if(zahlenwert.length == 0){
            }
            else if(zahlenwert.length == 1 && zahlenwert.match(/^(-|[0-9]) /)!=null){
                status = 1;
                console.log("zahlenwert ok");
            }
            else if(zahlenwert.length == 2 && zahlenwert.match(/^(-[0-9]|[0-9],|[1-9][0-9])/)!=null){
                status = 1;
                console.log("zahlenwert ok");
            }
            else if(zahlenwert.length == 3 && zahlenwert.match(/^(-[1-9][0-9]|[0-9],[0-9]|100|[1-9][0-9],|-[0-9],)/)!=null){
                status = 1;
                console.log("zahlenwert ok");
            }
            else if(zahlenwert.length == 4 && zahlenwert.match(/^(-100|100,|[1-9][0-9],[0-9]|-[0-9],[0-9]|-[1-9][0-9],)/)!=null){
                status = 1;
                console.log("zahlenwert ok");
            }
            else if(zahlenwert.length == 5 && zahlenwert.match(/^(100,0|-100,|-[1-9][0-9],[0-9])/)!=null){
                status = 1;
                console.log("zahlenwert ok");
            }
            else if(zahlenwert.length == 6 && zahlenwert.match(/^-100,0/)!=null){
                status = 1;
                console.log("zahlenwert ok");
            }
            else{
                zahlenwert = zahlenwert.substring(0,zahlenwert.length-1);
                $("input#zahlenwert").val(zahlenwert);
                console.log("Error!!!");
            }
        }
    }
});
});
于 2013-10-08T06:44:55.023 に答える
0

探しているものは次のとおりです。

http://jeroenvanwarmerdam.nl/content/resources/javascript/jquery/spincontrol/jquery-spincontrol-1.0.zip

そして、ここに例があります:

http://jeroenvanwarmerdam.nl/content/resources/javascript/jquery/spincontrol/jquery-spincontrol.html?x=31&y=10

統合:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="jquery-numeric.js"></script>
<script type="text/javascript" src="jquery-number-selector.js"></script>
<script type="text/javascript" src="jquery-spincontrol-support.js"></script>
<script type="text/javascript" src="jquery-spincontrol.js"></script>

<!-- SpinControl definition -->
<script type="text/javascript">
(function($) {
    $(function() {
        $(":number").addClass("number").spinControl({ folder: "images/" });
    });
})(jQuery);
</script>

本文のhtmlコードは次のとおりです。

<input type="number" max="10" min="-10" step="0.5" />
于 2013-10-07T11:13:27.193 に答える
0

私はあなたの要件を部分的に推測していますが、入力値を特定の範囲内の数値に制限しようとしている場合は、HTML5 の範囲入力タイプを使用できます。

<input type="range" name="myrange" min="-100" max="100">

または、このデモ フィドルのように JavaScript を使用して値を検証します。

document.getElementById('test').onchange = isNumber;
function isNumber(){
    var val = this.value;
    var aNumber = !isNaN(val);
    var aNumberNotOverOneHundred = (Math.abs(parseFloat(val, 10)) <= 100);
    alert((aNumber && aNumberNotOverOneHundred)?"Yarp":"Narp");
}

または、入力パターン属性を使用して、正規表現パターンに対して検証します。

于 2013-10-07T11:26:13.293 に答える