- ベストアンサー
javascriptでname属性に記号を使う方法
- javascriptでname属性に記号を使いたい場合、カッコ[]を付けることで対応できます。
- しかし、カッコを付けるとjavascriptがエラーになり、うまく動作しないことがあります。
- エスケープの方法を試してみましたが、うまくいきませんでした。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
昔からある方法 document.form1.elements['hoge[]'][0].value=1; DOMを使って var elms=document.getElementsByName('hoge[]'); elms[0].setAttribute('value', '1'); 他の方法 <input name="hoge1"> <input name="hoge2"> としておいて、 JavaScriptは document.form1.hoge1.value=1; PHPを書き換える。 // $_POSTの上書きはおすすめしません。例として。 $_POST['hoge']=array($_POST['hoge1'], $_POST['hoge2']);
その他の回答 (3)
- think49
- ベストアンサー率59% (285/482)
ifでnameプロパティを判定すればいいんじゃないでしょうか? 下記コードで正常動作することを確認しました。 ------ <form name='form1'> <input size='10' type='text' name='hoge[]' value='0'> </form> <script type='text/javascript'> var input = document.form1.getElementsByTagName('input'), target; for(var i=0,max=input.length; i<max; i++){ if(input[i].name == 'hoge[]'){ target= input[i]; } target.value='match!' } </script> ------ JavaScript DOMで関連資料が見つかります。
お礼
回答ありがとうございます。
- yambejp
- ベストアンサー率51% (3827/7415)
結局nameのような型がいい加減なものをつかうと処理が煩雑になると いうことです。 たとえばnameは性質上ユニークである必要はないためhoge[]が 複数存在する場合も考えられます(とくにhoge[]のような 配列渡しをするばあいなどは) こんな風な処理をいれるとよいかもしれません。 <script> function hoge(){ var f=document.getElementById('form1'); var nodes=f.elements['hoge[]']; if(nodes.length){ for(var i=0;i<nodes.length;i++){ nodes[i].value=1; } }else{ nodes.value=1; } } </script> <form id='form1'> <input size='10' type='text' name='hoge[]' value='0'> <input size='10' type='text' name='hoge[]' value='0'> </form> <input type="button" value="test" onclick="hoge()">
お礼
回答ありがとうございます。
- fujillin
- ベストアンサー率61% (1594/2576)
エラーになるのは、配列表記のhoge[]と区別できないからだと思われます。 文字列表記で表せる form1.item('hoge[]').value = 1; のような方法で指定すればいけるのでは?
お礼
回答ありがとうございます。
お礼
回答ありがとうございます。