tips blog

【PHP】phpQueryでcheckboxのcheckedが消えない

2012年9月6日

【事象】
■【PHP】phpQueryでcheckboxのcheckedが消えない

<input type=”checkbox” name=”test1″ value=”テスト1″ checked>
を消そうと
$doc[‘[name=”test1″]’]->attr(“checked”,false)
としたのだが消えない
逆にcheckedが無い場合でもcheckedが付いてしまうというバグ?
(jqueryと挙動が違うから仕様じゃないよね?)

【解決策】
■phpQuery.phpの書き換え
public function attrの

@$node->setAttribute($a, $value); 

if($value===false){

@$node->removeAttribute($a);
}else{
@$node->setAttribute($a, $value);
}

に変更

【原因】
DOMElement::setAttribute(“checked”,false);
では消えないって事っぽい
checkedを消すには
DOMElement::removeAttribute(“checked”);
にする必要がある

こういうミスって事は、
まだまだ同じようなバグありそうですな。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です