3

ajax呼び出しから返されたブール値をチェックし、それがtrueであるかどうかをチェックするようにチェックボックスを設定する必要がある非常に単純なjqueryがあります。

console.log("loc: " + r.location.defaultLocation);
if( r.location.defaultLocation == true ) {
    $('#loc-default').attr('checked',true);
}

これは、モーダル フォームを開く onclick 関数で実行されます。返された場所情報が、これがデフォルトの場所であることを示している場合は、チェックボックスをオンにする必要があります。1 つのページに 5 つ、つまりユーザーがクリックできる場所が 5 つあります。

私が実行しているのは、 r.location.defaultLocation(console.log 行ごとに) false を返しても、チェックボックスがまだチェックされていることです。私は何を間違っていますか?

true/false はブール値ではなく文字列でなければならないと主張する人のために:

これはの結果ですconsole.info(typeof(r.location.defaultLocation));

ここに画像の説明を入力

そして、これが の結果ですconsole.dir(r)。(group機密情報のためぼかしています。)

ここに画像の説明を入力

問題を見つけました

#loc-defaultどうやらjqueryは、最初のものがチェック済みとマークされた後にチェックされたことを覚えています。関数にelseを追加したところ、動作するようになりました:

if( r.location.defaultLocation == true ) {
    $('#loc-default').attr('checked',true);
}
else {
    $('#loc-default').attr('checked', false);
}
4

5 に答える 5

3

これが起こっていることを確認できる唯一の方法は、defaultLocation が実際にはブール値の false ではなく、true と評価される文字列 "false" である場合です。

于 2012-12-20T16:27:03.610 に答える
2

r.location.defaultLocationがブール値であることを確認してください。

if (!!r.location.defaultLocation) {}値がブール型になるように強制してください。

于 2012-12-20T16:26:11.450 に答える
2

文字列だと思いr.location.defaultLocationます。その上で使用すると、 が表示されます。しかし、本当です。 "false"console.log"false""false" == true

で変数の型を確認できますtypeof

console.log(typeof r.location.defaultLocation); // Log the current type of r.location.defaultLocation
console.log(typeof false); // Display boolean
console.log(typeof "false"); // Display string
于 2012-12-20T16:27:39.417 に答える
1

あなたのコードは正しいように見えるので、else ステートメントを処理して、チェックボックスを強制的にオフにします。

if( r.location.defaultLocation == true ) {
    $('#loc-default').attr('checked',true);
} else {
    $('#loc-default').attr('checked',false);
}
于 2012-12-20T16:28:04.217 に答える
0

まず第一に、私は何が何でr.location.defaultLocationあるかを確認します

 console.info(typeof(r.location.defaultLocation));

それから私はそこから行きますが、上記のコードを使用します:

 if (!!r.location.defaultLocation && typeof(r.location.defaultLocation)==="string") {}
于 2012-12-20T16:29:09.867 に答える