我在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!');
}
这是what I have so far的小提琴。
有什么想法吗?
BTW:将if if查询与reg表达式结合起来的最佳方法是什么?
答案 0 :(得分:2)
您在每个元素的同一事件处理程序中运行以下所有代码:
$this.attr('id') == 'simple_present'
$this.attr('id') == 'simple_past'
$this.attr('id') == 'past_participle'
他们不可能都是真的,所以&&
可以保证给你false
。
答案 1 :(得分: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/
如您所见,我有:
通过这些更改,生成的“keyup”处理程序代码更加简单。
答案 2 :(得分:0)
在if:
之前添加一个调试行alert( simple_present.toString() + '\n' + simple_past.toString() + '\n' + past_participle.toString() );