2

このパターンを使用して、0から何までの数量フィールドの数値のみをチェックします。コードで012、010などを許可しないようにするにはどうすればよいですか。開始ゼロを意味しますが、スタンドアロン番号として0を許可します。

0、1、10、1などは大丈夫です。

ただし、012、005などは許可されません。

それを行うパターンはありますか?

これが私のコードですが、問題があります。避けたい数が先頭になくても、0が削除されます。自分のフィールドでスタンドアロン番号として0を許可したいと思います。

$('.td-qnt input').live('change keyup blur', function(e) {
    var re = /^[0-9]\d*$/;
    var str = $(this).val();
    $(this).val(str.replace(/^[ 0]/g,''));
    if (re.test(str)){
        var price = $(this).parent().parent().prev('td').html();
        var realprice = price.replace(/[^0-9\.]/g,'');  
        var result = realprice * str;
        var subtotal = result.toFixed(2);
        $(this).parent().parent().next('td').html('$'+subtotal);
    } else {
        $(this).parent().parent().next('td').html('$0.00');
        $(this).val('');
    }
});
4

2 に答える 2

8
"" + parseFloat(str)

数値が何であるかを計算し、それを再び文字列にします。ビンゴ、先行ゼロなし。

于 2012-08-27T16:40:19.817 に答える
0

同じ要件がありましたが、私の状況では、キーアップ時に入力をクリーンアップします。parseIntとparseFloatはどちらも先行ゼロをクリアしますが、末尾の数字がない場合はparseFloatも小数をクリアします。だから私はこれを書いた:

function removeLeadingZeros(target){
    var finished=false;
    var localTarget=target;
    var firstDigit;
    var secondDigit;
    while (!finished){
        firstDigit=localTarget.substring(0,1);
        secondDigit=localTarget.substring(1,2);
        if (firstDigit == '0' && !(secondDigit == '.' || secondDigit == ''))
            localTarget=localTarget.substring(1);
        else
            finished=true;
    }
    return localTarget;
}

これは、フィールドまたは「0003」のような貼り付けへのユーザー入力を直接処理します。

于 2015-01-21T14:22:47.773 に答える