cakephpで以下のソースを書き、ラジオボタンタグを出力しました。
$form->create('name' => 'form')
$form->radio('TestModel.field',array('指定なし', '無', '有'), 'value' => 0));
$form->end();
----出力されたHTML(formタグなどは省略しています)------
<input type="radio" name="data[TestModel][field]" id="TestModelField0" value="0" checked="checked" >
<label for="TestModelField0">指定なし</label>
<input type="radio" name="data[TestModel][field]" id="TestModelField1" value="1" >
<label for="TestModelField1">無</label>
<input type="radio" name="data[TestModel][field]" id="TestModelField2" value="2" >
<label for="TestModelField2">有</label>
--------------------------------
[リセット]ボタンのようなのを押した時に、'指定なし'の初期値を選択するようにしたいので、
javascriptでしようとしているのですが、
name属性が"data[TestModel][field]"のためか、
document.form.data[ModelTest][field].value = 0とするとエラーになってしまいます。
(TestModelは宣言されていません。というエラー)
ラジオボタンのグループは複数あります。
ラジオボタンにアクセスするにはどうしたらよいでしょうか。
No.3ベストアンサー
- 回答日時:
No2様がご指摘のように、[ ]が配列とみなされてしまうのでしょう。
また、[ ]は本来はname属性には使えなかったような…
デフォルトのチェックを明示していることが明らかであるなら、その要素を探してチェックすると言う方法が取れると思います。(reset1)
[ ]を含めた文字列で名前を指定すれば、こちらでも取得可能なようです。(reset2)
ただし、どのブラウザでもOKかは確認していません。
No2様もご指摘のように、個別のidがあるのならそれを使うのが簡単。
formの内容(要素)が決まっているのなら、順序(要素の順)で指定する方法でも可能かと。
reset1とreset2のサンプル。
(全角空白は半角に)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>sample</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript">
<!--
function hoge(evt){
var t = evt.target || evt.srcElement;
var i, e, elm = t.form.elements;
for(i=0; e=elm[i++];)
if(e.nodeName=="INPUT" && e.type=="radio" && e.defaultChecked)
e.checked = true;
}
function fuga(evt){
var t = evt.target || evt.srcElement;
var deflt = "data[TestModel][field]";
t.form.elements[deflt][0].checked = true;
}
//-->
</script>
</head>
<body>
<form action="#">
<p>
<input type="radio" name="data[TestModel][field]" id="TestModelField0" value="0" checked>
<label for="TestModelField0">指定なし</label>
<input type="radio" name="data[TestModel][field]" id="TestModelField1" value="1" >
<label for="TestModelField1">無</label>
<input type="radio" name="data[TestModel][field]" id="TestModelField2" value="2" >
<label for="TestModelField2">有</label>
</p>
<p>
<input type="button" value="reset1" onclick="hoge(event);">
<input type="button" value="reset2" onclick="fuga(event);">
</p>
</form>
</body>
</html>
ありがとうございます。
出来ました!!
var deflt = "data[TestModel][field]";
この方法はいろいろ検索していた時に見つけていたのですが、
""で囲むとしかかかれていなくて、指定の仕方を誤っていたようです。
t.form.deflt.checked = true;
こうしていました。
var t = evt.target || evt.srcElement;
これは、formにname属性がない時に使えそうですね。
javascriptも初心者なので、知りませんでした…
No.4
- 回答日時:
checked="checked" のようにしょうりゃくもせずにあることだし、ここは
そのふぉーむを、form.reset () するだけで・・・
ありがとうございます。
この方法でやってみたのですが、出来なかったのです…
おそらく、このフォームの状態を保持したまま、
画面を更新する処理をphpでしているから??だと思うのですが…
ラジオボタン以外にもテキストボックスやセレクトボックスやチェックボックスがありますが、チェックやテキストがクリアされませんでした。
これで出来れば、ソースもすっきりすると思っていたので残念です。
No.2
- 回答日時:
うーん、本来 [ ] は配列の個別オブジェクトを参照するものですからねぇ。
NAMEの data[TestModel][field] を data_TestModel_field あたりに変更したほうがよいかと思いますが、
変更が不可なら IDで参照したほうが安全かも
var rdobtn = document.getElementById('TestModelField0');
rdobtn.checked;
No.1
- 回答日時:
>document.form.data[ModelTest][field].value = 0とするとエラーになってしまいます。
は
<document.form.data[TestModel][field].value = 0とするとエラーになってしまいます。
ですよね?
それはそれとして
document.form.data[TestModel][field][0].checked
で動作しませんか?
ありがとうございます。
ご指摘ありがとうございます。
こちらでの入力ミスですので大丈夫です。
document.form.data[TestModel][field][0].checked
で試したところ、IEからのエラーが表示されました。
document.form.data.TestModel' は Null またはオブジェクトではありません。
dataとTestModelが'.'で区切られているのが気になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ラジオボタンのリセット方法
-
クイズの正解(○×)をテキスト...
-
JavaScriptでラジオボタンのチ...
-
ラジオボタンでdisabledとchecked
-
プルダウン 項目が多いので先頭...
-
dijit.form.ComboBoxについて
-
return trueとreturn falseの用...
-
javascript による POST 送信時...
-
テキストボックスに入力された...
-
プルダウンメニューを表の中に...
-
VBSでブラウザ上のテキストボッ...
-
ラジオボタンの選択で解答・点...
-
追加ボタンを押した際に ok ボ...
-
netscapeでもinnerTextやinnner...
-
tableの任意行にfocusをあてる
-
value内に変数を入れたい
-
submitするとなぜか2度実行する
-
JavaScriptで特定のtdタグにcla...
-
VBScriptでHTMLのセレクトボッ...
-
全てのselect要素をデフォルト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javascriptを使ってラジオボタ...
-
ラジオボタンにタブインデック...
-
ラジオボタンのチェックが外れ...
-
javascript作成してます。ラジ...
-
ラジオボタンにチェックを入れ...
-
ラジオボタン未チェックの場合...
-
チェックされたラジオボタンに...
-
Jvasvriptのlengthで個数が取得...
-
フォームPOST後「戻る」時のチ...
-
データベースの値を判断してラ...
-
チェックボックスのON/OFFに連...
-
ラジオボタンでチェックした項...
-
サイト内にGoogleサイトを表示...
-
JavaScript ラジオボタン デ...
-
ラジオボタンでdisabledとchecked
-
リンク文字クリックでラジオボ...
-
ポップアップウインドウで選択...
-
jQueryで複数のラジオボタンを処理
-
js radioボタンの「name」を多...
-
ラジオボタンとif文
おすすめ情報