0

まず、attr("checked") の代わりに prop("checked") を使用します。これは、私が理解しているように、チェックボックスがチェックされているかどうかを取得するために prop が使用され、attr は html 属性のみを通知するためです。設定されているかどうか (最初の html コードのように)。

これで、次のように php に 2 つのチェックボックスが書き出されました。

echo '<h4>Special</h4>';
$specials=array('Is Home Page', 'Does not appear in navigation');
for($i=0;$i<count($specials);++$i){
if($specials[$i]!=''){
    echo '<input type="checkbox" name="special[',$i,']"';
    if($page['special']&pow(2,$i))
        echo ' checked="checked"';
    echo ' />',$specials[$i],'<br />';
}
}

要素は次のようになります。

<input type=​"checkbox" name=​"special[0]​"/>​
<input type=​"checkbox" name=​"special[1]​"/>​

チェックボックスの1つをチェックすると、サーバーに送信する値を取得したいのですが、うまくいかないようです:

var $home = $("#tabs-advanced-options input[name='special[0]']");
//if($home.is(":checked")){ // always returns false
if($home.prop("checked")){  // always returns undefined
 special["0"] = "Home";
}
var $hidden = $("#tabs-advanced-options input[name='special[1]']");
//if($hidden.is(":checked")){ // always returns false
if($hidden.prop("checked")){ // always returns undefined
 special["1"] = "isHidden";
}

コードのコメントで指摘されているように、prop("checked") は常に undefined を返します。チェックボックスがチェックされました...また、is(":checked")で試しましたが、常にfalseを返します。毎回選択される dom 要素は 1 つだけです (私は .prop() がセットの最初の要素に対してのみ機能することを知っています)

どんなアイデアでも大歓迎です!

コンソールでテストしたので、セレクターは正しく、正しい結果を返します (バックスラッシュの有無にかかわらず-:

$("#tabs-advanced-options input[name='special\\[1\\]']")
<input type=​"checkbox" name=​"special[1]​">​

$("#tabs-advanced-options input[name='special\\[0\\]']")
<input type=​"checkbox" name=​"special[0]​">​

$("#tabs-advanced-options input[name='special[1]']")
<input type=​"checkbox" name=​"special[1]​">​

$("#tabs-advanced-options input[name='special[0]']")
<input type=​"checkbox" name=​"special[0]​">​

私はjQueryバージョンを使用しました

私はjquery 1.9.0を使用しています:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>

よろしく!

4

1 に答える 1