0

次のような JQuery コードがあります。

// Validation to avoid non alphanumeric characters from being typed
function alphanumeric(eventSource) {
    var numaric = eventSource.val();
    for (var j = 0; j < numaric.length; j++) {
        var alphaa = numaric.charAt(j);
        var hh = alphaa.charCodeAt(0);
        // If the value contains non alphanumeric characters
        if (!((hh > 47 && hh < 58) || (hh > 64 && hh < 91) || (hh > 96 && hh < 123))) {
            eventSource.val(numaric.substring(0, j) + numaric.substring(j + 1,  numaric.length));
        }
    }
}

テキスト ボックス入力の特殊文字を検証しようとしています。しかし、どういうわけか、文字コードが32であるスペース(キーボードのスペースバー)も検証します。アドバイスをお願いします、ありがとう。

4

2 に答える 2

1

これを試して :

        function alphanumeric(eventSource) {
            var numaric = eventSource.val();
            for (var j = 0; j < numaric.length; j++) {
                var alphaa = numaric.charAt(j);
                var hh = String.charCodeAt(alphaa);                
                // If the value contains non alphanumeric characters
                if (hh != 32 && !((hh > 47 && hh < 58) || (hh > 64 && hh < 91) || (hh > 96 && hh < 123))) {
                    eventSource.val(numaric.substring(0, j) + numaric.substring(j + 1, numaric.length));
                }
            }
        }       
于 2013-02-08T08:05:39.670 に答える
1

このコードを試してください

var regtest = 'dfdsfdsf23424';
var letters = /^[a-zA-Z0-9]+$/;    
var result = letters.test(regtest );
console.log(result);​//true

regtest = 'dfdsfdsf 23424';
result = letters.test(regtest );
console.log(result);​//false

フィドルをテストするhttp://jsfiddle.net/Stw2Y/

あなたが機能するために、特殊文字を避けてからこれを試してください

var letters = /^[a-zA-Z0-9]+$/;    
function alphanumeric(eventSource) {
    var numaric = eventSource.val();
    var str='';
    for (var j = 0; j < numaric.length; j++) {
        var alphaa = numaric.charAt(j);
        // If the value contains non alphanumeric characters
        if(letters.test(alphaa))
        {
             str+=alphaa;
        }
    }
    eventSource.val(str);   
}

ここでテストhttp://jsfiddle.net/Stw2Y/1/

于 2013-02-08T08:03:00.577 に答える