0

テキストファイルがあります。約1000行あり、各行には8文字の英数字の単語が含まれています。たとえば、私のテキストファイルは次のようになります。

TEST1234
T1E2A334
12RR8912

等々。このファイルは、サーバーのTestCodesというフォルダーにあります。

これで、htmlファイルtest.htmlができました。このファイルには、ユーザーが持っているテストコードを入力する入力テキストボックスがあります。

確認というボタンがあります。この入力ボタンがクリックされたときに、ユーザーが入力した値をテキストファイルの内容と照合したいと思います。

テストコードがテキストファイルに存在する場合は、Proccedというボタンを表示します。存在しない場合は、invalidというエラーメッセージを表示します。

if条件の書き方は知っていますが、テキストファイルと照合する方法がわかりません。

HTML

<div class="user-input">
    <input type="text" name="test-code" id="test-code" value="" />
    <input type="submit" value="Verify Code" name="verify-code" id="verify-code" />
</div>
<div id="TestRegister">
    <form id="club" action="/Proceed.html" method="post" autocomplete="off">
        <input type="submit" value="Proceed Registration" name="proceed-register" />
    </form>
</div>
<div id="TestError">
    <span>Please check the code again, its not valid</span>
</div>

JavaScript

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

<script type="text/javascript">
$(document).ready(function () {
    $("#TestRegister").hide();
    $("#TestError").hide();

    $.get("testcodes.txt", function (data) {
        var lines = data.split("\n");

        // this is where I am stuck. how to pass the above to ARRAY
        $("#verify-code").click(function (e) {
            e.preventDefault();
            if ( /* here I need to check against the user input value, if they are equal */ ) {
                $("#TestRegister").show();
                $("TestError").hide();
            } else {
                $("#TestRegister").hide();
                $("TestError").show();
            }
        }
        });     


</script>

テストコードから配列にテキストを渡して、この配列に対してユーザー入力値を確認するにはどうすればよいですか?ユーザー入力値が配列に存在する場合は、を表示します。存在し#TestRegisterない場合、または入力値が空白またはnullの場合は、を表示し#TestErrorます。

ヒントに感謝します。

4

2 に答える 2

2
var lines;

$(document).ready(function () {
    $("#TestRegister").hide();
    $("#TestError").hide();

    $.get("testcodes.txt", function (data) {
        lines = data.split("\n");
    });

    $("#verify-code").click(function (e) {
        e.preventDefault();

        if (lines.indexOf($("#test-code").val()) !== -1 && $("#test-code").val().length == 8) {
            $("#TestRegister").show();
            $("TestError").hide();
        } else {
            $("#TestRegister").hide();
            $("TestError").show();
        }

    });

});
于 2012-08-07T20:24:57.473 に答える
0

テストコードが単語の境界の間にあることを確認する正規表現を作成することで、配列ループを完全に回避できます。

var codeRegEx = new RegExp('\\b'+$('#test-code').val()+'\\b');
if(codeRegEx.test(lines)) {
   // the testcode is found on a single line, avoiding partial matches
}

これがデモです:

jsFiddleデモ

于 2012-08-07T20:41:08.620 に答える