2017-12-11 5 views
0

次の理由が真であると評価されている理由を理解しようとしています。私はいくつかのJSのために状態が変化していないことを確認するために、以下を二重チェックしました。また、Chrome、Safari、Firefoxでも確認されており、すべてチェックボックスにチェックされています。なぜどんなアイデア?チェックボックスの入力がチェックされていないにもかかわらずチェックされていると評価する

<input type="checkbox" name="shipping[same_as_billing]" id="shipping:same_as_billing" value="1" onclick="shipping.setSameAsBilling(this.checked);"> 
+1

最初にチェックされていない場合は、最初にクリックされたとき(trueにチェックされているため)、falseになってからtrueになります。* .defaultChecked *プロパティは、最初にチェックされたかどうかを示します(つまり、checked属性が設定されている場合)。 – RobG

+1

簡略化された ''を試してみると、Firefoxで期待される結果が得られているようです。最初にクリックすると、新たにチェックされた状態が反映されて「真」となり、その後のクリックも同様に「偽」と「真」の間で繰り返されます。他の動作が予想される場合は、目的の結果が何であるかを指定する必要があります。 –

+0

ありがとう@RobG - 'defaultChecked'プロパティがfalseに設定されていることがわかります。したがって、DOMを検査するときにチェックされたプロパティが目に見えないように設定/作成されていないにもかかわらず、 – tomphilps

答えて

0

単純なonclick関数を置くことができます。 this.checkedのステータスがcheckboxに設定されているかどうかをチェックします。

function setSameAsBilling(status){ 
 
    console.log(status); 
 
    if(status == true){ 
 
    console.log('checked') 
 
    return true; 
 
    }else{ 
 
    console.log('Not checked') 
 
    return false; 
 
} 
 

 
}
<input type="checkbox" name="shipping[same_as_billing]" id="shipping:same_as_billing" value="1" onclick="setSameAsBilling(this.checked);">

0

このようなあなたのチェックボックスのコンソールログを行います

<input type="checkbox" onclick="console.log(this.defaultChecked)"/> 

あなたのチェックボックスはデフォルトでチェックされている場合は、this.checkedの値は、あなたまでに設定しますそれを変更。

あなたは不履行がfalseになりたい場合は、設定することで、それを変更:

W3SCから撮影
this.defaultChecked = false; 

を:

defaultCheckedプロパティを確認 属性のデフォルト値を返します。

このプロパティは、チェックボックスがデフォルトでオンの場合はtrueを返します。 を返します。それ以外の場合はfalseを返します。

関連する問題