根据数组中的值检查用户输入值

时间:2012-08-07 20:21:21

标签: javascript jquery html filereader

我有文字文件。其中大约有1000行,每行包含一个8个字母的字母数字字,例如我的文本文件看起来像这样

TEST1234
T1E2A334
12RR8912

等等。此文件位于服务器上名为TestCodes

的文件夹中

现在我有一个名为test.html的html文件,在这个文件中我有输入文本框,用户输入他/她带有的测试代码

我有一个名为Verify的按钮。单击此输入按钮时,我想根据文本文件中的内容检查用户的输入值。

如果测试代码存在于文本文件中,则显示一个名为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,如果没有,或者输入值为空或空,请显示#TestError

感谢并感谢任何提示。

2 个答案:

答案 0 :(得分: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();
        }

    });

});

答案 1 :(得分: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 DEMO