ログ日記

作業ログと日記とメモ

チェックボックスの操作でsetValue(true)としてはいけない

勘違いしてた。

<?php
...
$radioElement->setValue(true);

でチェックがオンになるんじゃないんだな。動いてたのは偶然。


flexy内部では

<?php
// Element.php
...
if ($this->attribute['value'] == $value){
    $this->attribute['checked'] = true;
}

という操作が行われている。


どういうことかと言うと、idでエレメントを判断できるにもかかわらず、setValue()の引数はvalue値と同じ値でないといけないのだ。
今までたまたま動いていたのは

<?php
if ('radioValue' == true)

がtrueを返すからだ。普通にradioのvalueにテキストを入れていればsetValue()でtrueを設定しても問題ない。
問題が起こるのはradioのvalueで数値の0などを記述していた場合。

<?php
if ('0' == true)

これはもちろんfalseになるので、checkedにならない。
なので、radioボタンに対するsetValue()はvalue値にするように統一した方がいいな。


どこを見てtrueを設定すると思ったんだろう・・。


もし
Nishimura's Site
ここを見て勘違いした人が居たらスミマセン・・。
検索で上位に出てくるようにしていたので、間違って覚えられていたら申し訳ないな。。
該当の部分はたった今直した。