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!');
}

ここに私がこれまでに持っているもののフィドルがあります。

何か案は?

ところで: 長い if クエリと reg 式を組み合わせる最良の方法は何ですか?

4

3 に答える 3

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構造を変更しました。
  • 現在の単語を変数にキャッシュしました。

これらの変更により、結果の「キーアップ」ハンドラーコードははるかに単純になります。

于 2012-08-25T14:25:56.667 に答える
2

各要素の同じイベント ハンドラーで、次のすべてのコードを実行します。

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

すべてが真であるとは限らないため、&&は確実に を返しますfalse

于 2012-08-25T13:27:29.600 に答える
0

if の直前にデバッグ行を追加します。

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