1

関数が SPECIAL CHARACTER を含む入力に対して 0 を返す理由がわかりませんsearch()。特殊文字が最初に出現する位置を見つけたかったのです。メソッドの値をハードコーディングするとsearch()正常に動作しますが、テキスト ボックスから値を取得すると正しく動作しません。

以下は私のHTMLコードです:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<script type="text/javascript" src="jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="test.js"></script>

</head>
<body>

    <input type="text" id="txt" onkeyup="return checkLength();"/>
    <input type="button" id="btn" value="Verify" onclick="getValue()"/>


</body>
</html>

以下は、Javascript の使用を実装したスクリプトsearch()ですが、入力に対して値が 0 になる理由がわかりません。実際には、最初の特殊文字の出現位置を見つけたかったのです。

$(document).ready(function() {

    $('#btn').attr('disabled',true);

    $("#txt").bind({
        paste : function(){
            $('#btn').attr('disabled',false);
            checkLength();
        },
        cut : function(){
            checkLength();
        }
    });
});

function checkLength(){

    var txtLength = $("#txt").val().length;
    var banTxt = document.getElementById("txt").value;

    if (txtLength != 0) {

        if(isAlphaNumeric(document.getElementById("txt").value)) {
            $('#btn').attr('disabled',false);
        } else {


            var str=banTxt;
                          //Here I am using search() to find position of Special Character.
            var n=banTxt.search(/[^a-zA-Z ]/g);
            alert("position of special char is: " + n);


            var preTxt = banTxt.substring(0,(txtLength - 1));
            var preTxtLength = preTxt.length;
            alert("Special characters are not allowed!");
            if(preTxtLength == 0){
                $('#btn').attr('disabled',true);
                document.getElementById("txt").value = "";
            }else if(preTxtLength != 0){
                document.getElementById("txt").value = preTxt;
                $('#btn').attr('disabled',false);
            }
        }
    } else {
        $('#btn').attr('disabled',true);
    }
}

function isAlphaNumeric(inputString) {
    return inputString.match(/^[0-9A-Za-z]+$/);
}

function getValue(){
    var txtValue = document.getElementById("txt").value;
    alert("Value submitted is: " + txtValue);
}
4

2 に答える 2

0

実際には、次の行を使用しました var n=banTxt.search(/[^a-zA-Z ]/g); 特殊文字の位置を取得するために、同時に onkeyup イベントを使用していることに注意してください。コードをコピーして貼り付ける場合、つまり最初に+ctrlその後、それ自体が keyup イベントです。これが 0 を取得している理由だと思います押された後、テキストは貼り付けられませんが、onkeyup イベントがトリガーされます。vctrlvctrlctrl

私はそれの解決策を探しています。

于 2013-08-23T05:41:39.917 に答える
0
var n=banTxt.search(/[^a-zA-Z ]/g);

123#4$5 、 12#4 などの特殊文字を含む文字列を試してみましたが、特殊文字の位置が次のように警告を受けています: 0

それはあなたの正規表現が一致するものです:アルファベット文字も空白もありません-数字を含みます. 対照的に、isAlphaNumeric関数はに対して一致し/^[0-9A-Za-z]+$/ます-おそらくそれらを互いに整列させたいでしょう。

于 2013-08-21T16:12:47.217 に答える