4

我有三个输入字段来“搜索”一个 JSON 树。如果所有三个字段均已填写且正确,则从下一个 JSON 级别获取数据。

我通过 keyup-event 计算一个数字以获取 JSON 树的下一个数据。但是每次所有三个字段都填满时,计数器将重置。

HTML

<h1>sein</h1>
<form>
    <input type="text" id=simple_present placeholder="simple present">
    <input type="text" id=simple_past placeholder="simple past">
    <input type="text" id=past_participle placeholder="past participle">
</form>
<div class="answer">Enter: be - was - been</div>

JS

$('input').on('keyup', function() {
    var count = 0;

    if (this.value === json.verbs.irregular[count++][this.id]) {
        $(this).prop('disabled', true).next().focus();
    }

    if ($('input:not(:disabled)').length === 0) {
        $('input').val('').prop('disabled', false).first().focus();
        $('h1').text(json.verbs.irregular[count++].infinitiv);
        alert(count);
    }
});

也许变量会在每个关键事件上设置为 0?但我不能将它设置在keyup-event 之外!

这是我到目前为止所做的演示。

只需输入:

  1. 曾是
  2. 到过

有任何想法吗?

4

2 回答 2

2

你可以试试这个

var count = 0, amount = json.verbs.irregular.length-1, current = 0,
inputs = $("#simple_present, #simple_past, #past_participle");

$(inputs).on('keyup', function() {
    if (this.value === json.verbs.irregular[count][this.id]) {
        $(this).prop('disabled', true).next().focus();
    }

    if ($('input:not(:disabled)').length === 0) {
        $('input').val('').prop('disabled', false).first().focus();
        if(current < amount) { 
            current++; count++; 
        }
        else {
            current=0; count=0; 
        }
        $('h1').text(json.verbs.irregular[current].infinitiv);
    }
});​

演示

于 2012-08-25T18:00:13.677 回答
0

有一些工作:

http://jsfiddle.net/fantactuka/56VBk/

于 2012-08-25T18:06:41.983 回答