0

我在 keyup-event 上使用 jQuery 搜索 JSON 树。如果输入等于所需条目,则输入将被禁用。

现在我需要调用一个函数,如果它们都被填满并且正确。if 查询很长,所以我已将它们写入变量。

我试过这个,但它失败了:

if (simple_present && simple_past && past_participle) {
    alert('All right!');
}

现在,当我写这样的东西时,它可以工作

if (simple_present || simple_past || past_participle) {
    alert('All right!');
}

这是我到目前为止所拥有的小提琴。

有任何想法吗?

顺便说一句:将 long if 查询与 reg 表达式结合起来的最佳方法是什么?

4

3 回答 3

2

您在每个元素的同一事件处理程序中运行以下所有代码:

$this.attr('id') == 'simple_present'
$this.attr('id') == 'simple_past'
$this.attr('id') == 'past_participle'

他们不可能都是真的,所以&&保证给你false

于 2012-08-25T13:27:29.600 回答
2

考虑一下:

var json = {
    "vocables": {
        "irregular": {
            "sein": {
                "simple_present": "be",
                "simple_past": "was were",
                "past_participle": "been"
            },
            "schlagen": {
                "simple_present": "beat",
                "simple_past": "beat",
                "past_participle": "beaten"
            },
            "werden": {
                "simple_present": "become",
                "simple_past": "became",
                "past_participle": "become"
            }
        }
    }
};

var word = $( 'h1' ).text();

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

    if ( $( 'input:not(:disabled)' ).length === 0 ) {
        alert( 'SUCCESS' );
    }
});

现场演示:http: //jsfiddle.net/NnAMu/1/

如您所见,我有:

  • 更改了 JSON 结构以更好地满足我的需求,
  • 将当前单词缓存到变量中。

通过这些更改,生成的“keyup”处理程序代码要简单得多。

于 2012-08-25T14:25:56.667 回答
0

在 if 之前添加一个调试行:

alert( simple_present.toString() + '\n' + simple_past.toString() + '\n' + past_participle.toString() );
于 2012-08-25T14:06:02.510 回答