作者kerash (恐八挖)
看板PHP
標題Re: [請益] form控制項陣列傳值結果?
時間Thu Oct 6 11:54:04 2011
: → KawasumiMai:不好意思接下來又有另外的延續問題 10/06 11:18
: → KawasumiMai:剛剛依照tnstiger大的方法,php已經取得正確 10/06 11:18
: → KawasumiMai:attr出來的結果是完美的Array,不過這次出在js 10/06 11:18
: → KawasumiMai:原先的html因為關聯性的關係,checkbox有呼叫js 10/06 11:19
: → KawasumiMai:第一個checkbox是皆否,呼叫的是取消後面所有checkbox 10/06 11:20
: → KawasumiMai:document.form.attr[i].checked = false 10/06 11:20
: → KawasumiMai:其他呼叫的是取消第一個皆否checkbox 10/06 11:20
: → KawasumiMai:document.form.attr[0].checked 10/06 11:20
: → KawasumiMai:這下變成js失效了,因為名稱變成attr[] 10/06 11:20
: → KawasumiMai:而用attr[][i]跟attr[][0]取代也失敗,請問該怎麼辦 10/06 11:21
我用比較笨的方法解決 (不確定有沒有比較好的)
<script type="text/javascript">
function chkbox(obj)
{
if(obj == document.getElementsByName("attr[]")[0])
{
for(var i = 1 ; i < document.getElementsByName("attr[]").length ; i++ )
{
document.getElementsByName("attr[]")[i].checked = false;
}
}
else { document.getElementsByName("attr[]")[0].checked = false; }
}
</script>
<style type="text/css">
label { display:block;}
</style>
<body>
<form name="chkform">
<label><input type="checkbox" onclick="chkbox(this)" name="attr[]"
value="123" />all cancel</label>
<label><input type="checkbox" onclick="chkbox(this)" name="attr[]"
/>1</label>
<label><input type="checkbox" onclick="chkbox(this)" name="attr[]"
/>2</label>
<label><input type="checkbox" onclick="chkbox(this)" name="attr[]"
/>3</label>
<label><input type="checkbox" onclick="chkbox(this)" name="attr[]"
/>4</label>
</form>
</body>
JS 對於同 name 的物件會自動轉為陣列, [] 對他來說好像認不出來
所以改用 getElementsByName 抓
其中為了比對是否為第一個,我把產生事件的物件丟進去判斷
應該有更好的寫法,我單純都用原始的 dom 寫而已
※ 補充一個抓的方法,如果不要用 getElement 的方式的話,改用
document.chkform.elements('attr[]')[0]
也可以
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.34.45.83
→ kerash:ya , 這篇是 100 篇= = 10/06 11:54
※ 編輯: kerash 來自: 114.34.45.83 (10/06 11:58)
推 KawasumiMai:感謝回應,所以簡單的說,attr[]要另外框起來再接[0] 10/06 12:00
→ KawasumiMai:只要在下把原文刪掉,隔天這篇就變99了XD(誤 10/06 12:00
→ kerash:PS.. 用後面的方法,在 obj == document.. 比對的地方會錯 10/06 12:01
→ kerash:要改用其他的方法 10/06 12:01
→ kerash:你刪掉我不會變 99 ,我是另發,不會整串刪啊~ 10/06 12:01
→ KawasumiMai:在下用document.form.elements('attr[]')[i].checked 10/06 12:02
→ KawasumiMai:就解決了 10/06 12:02
→ KawasumiMai:在下是說刪掉原討論串,隔周之後系統會清除那個洞 10/06 12:03
→ KawasumiMai:後面的文章會遞補,所以這篇會變99這樣,反正是說笑的 10/06 12:03
→ kerash:..XD 我是說我發的第一百篇 10/06 12:03
→ KawasumiMai:剛剛測試過沒有問題,紅字的方法很棒 10/06 12:04
→ KawasumiMai:喔...對喔,都已經到一萬四了在下在耍什麼蠢(死 10/06 12:04
→ KawasumiMai:一萬一千四... 10/06 12:04
→ kerash:不客氣,我也剛剛才想起紅字的方法 10/06 12:04
推 scribeTW:document.chkform['attr[]'][0] 更簡單的做法 10/06 12:13
→ KawasumiMai:wow,竟然直接當作form的子物件呼叫了.... 10/06 12:15
→ KawasumiMai:scribeTW大的方法也成功了,連element都不用打了.... 10/06 12:16