0

jQueryを使用して入力を数字のみに制限しているテキストボックスがあります。私が抱えている問題は、4桁のコードが0で始まる場合、フォーカスアウト時または別の数字が入力されたときにテキストボックスから削除されることです。これはmvc3アプリケーションであり、データ型は文字列です。先行ゼロが削除されないようにするにはどうすればよいですか?jQueryコードで気づいていないことがありますか?これは、「0025」など、先行ゼロが複数ある場合にも当てはまります。

$('#selector').bind('keyup paste', function (e) {
if (checkArrowKeyEntry(e)) {
    var ob = $(this);
    if (e.type == 'paste') {
        setTimeout(function () {
            myFuncion(ob);
        }, 1);
    } else {
        myFuncion(ob);
    }
}
});

function myFuncion(ob) {
ob.val(numericInputOnly(ob.val()));
}

function checkArrowKeyEntry(e) {
isNotArrowKey = true;
if (e.keyCode == 37 || e.keyCode == 39) { //|| e.keyCode == 8 || e.keyCode == 46) {
    // leftarrow, rightarrow, delete, backspace
    isNotArrowKey = false;
}
return isNotArrowKey;
}

function numericInputOnly(inputvalue) {
if (!isNaN(parseInt(inputvalue, 10))) {
    inputvalue = parseInt(inputvalue, 10);
}
else {
    inputvalue = "";
}
inputvalue = inputvalue.toString().replace(/[^0-9]/g, '');
return inputvalue;
}
4

1 に答える 1

3

nudeInputOnly関数に何か問題があるのではないかと思います。

常に文字列を出力することを正しく確認しますが(先頭の0が削除されないようにするため)、inputValueを文字列に変換するのが早すぎます。

あなたのコードのバグは次の行にあります:

inputvalue = parseInt(inputvalue, 10);

intに変換すると、末尾の0が「失われ」ます。

たとえば、

function numericInputOnly(inputvalue) {
    return inputvalue.replace(/[^0-9]/g, '');
}

これにより、入力された数字(先頭の0を含むすべての数字)のみが保持され、必要な数字に対応する場合があります。

于 2012-12-13T23:36:18.483 に答える