0

我有这个数组

 var foods = new Array();
    foods = [
        { id:  1, correct:'icecream', display: 'icecream',  response: ''},
        { id:  2, correct:'sundae', display: 'sundae',  response: ''},

    ];

和这个 html div

<div id="showfoods" class="foodlist">
    <div <input id="inputFoodChoice"class="foodinput" /></div>
        </div>

这是项目的表单部分将发生的事情的 jquery 部分

function FoodDisplay()
    {
    var txtTrial = "";

    $("#showfoods").hide();

    txtTrial = trials[curTrial].display;

    $("#textPrompt").html(txtTrial);

    $("#showfoods").show();

    $("#inputFoodChoice").val('');
    $("#inputFoodChoice").focus();


}

单词“icecream”将出现在其下方,用户将输入确切的单词icecream,然后按回车键(ltr==13)

我想要的是将人员键入的值存储到食物数组的空“响应”部分中,然后将其与食物数组中的“正确”值进行比较。取决于这个人是否正确,会弹出一条消息说你明白了!或不正确!

无论该消息出现多久,它都会以相同的方式显示“sundae”一词。

我无法存储输入值/将其与正确值进行比较。有人可以帮忙吗?

我想从某种意义上说,我希望它“编辑”foods 数组中的响应值,所以我可以获取该值并将其与输入值进行比较,或者这甚至是必要的吗?

4

1 回答 1

1

它有助于存储用户的响应,以防您想要输出他们如何做以及他们为每个人键入的内容的摘要。

您需要一个函数来检查列表中的输入值:

var checkInputValue = function () {
    trials[curTrial].response = input.val();    // store user's input into response
    if (trials[curTrial].response === trials[curTrial].correct) {    // users input is equal to the correct text
        alert('Correct!');
    } else {
        alert('Incorrect!');
    }
    curTrial++;    // next trial
    showTrial();
};

我建议你隔离显示问题的逻辑,这样你就可以为每个问题调用相同的函数,我将你的代码移到了这里:

var curTrial = 0;
var input = $("#inputFoodChoice");
var container = $("#showfoods");
var prompt = $("#textPrompt");
var showTrial = function() {
    container.hide();
    if (curTrial < trials.length) {
        txtTrial = trials[curTrial].display;
    } else {
        alert("No more questions left.");
    }
    prompt.html(txtTrial);
    container.show();
    input.val('');
    input.focus();        
}; 

见小提琴:http: //jsfiddle.net/amyamy86/jSyfy/

我的示例使用一个按钮click来触发checkInputValue(),您可以根据需要更改它并为enter键附加keydown/keypressed事件。

于 2013-04-04T19:50:55.157 回答