作者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
1F:→ kerash:ya , 这篇是 100 篇= = 10/06 11:54
※ 编辑: kerash 来自: 114.34.45.83 (10/06 11:58)
2F:推 KawasumiMai:感谢回应,所以简单的说,attr[]要另外框起来再接[0] 10/06 12:00
3F:→ KawasumiMai:只要在下把原文删掉,隔天这篇就变99了XD(误 10/06 12:00
4F:→ kerash:PS.. 用後面的方法,在 obj == document.. 比对的地方会错 10/06 12:01
5F:→ kerash:要改用其他的方法 10/06 12:01
6F:→ kerash:你删掉我不会变 99 ,我是另发,不会整串删啊~ 10/06 12:01
7F:→ KawasumiMai:在下用document.form.elements('attr[]')[i].checked 10/06 12:02
8F:→ KawasumiMai:就解决了 10/06 12:02
9F:→ KawasumiMai:在下是说删掉原讨论串,隔周之後系统会清除那个洞 10/06 12:03
10F:→ KawasumiMai:後面的文章会递补,所以这篇会变99这样,反正是说笑的 10/06 12:03
11F:→ kerash:..XD 我是说我发的第一百篇 10/06 12:03
12F:→ KawasumiMai:刚刚测试过没有问题,红字的方法很棒 10/06 12:04
13F:→ KawasumiMai:喔...对喔,都已经到一万四了在下在耍什麽蠢(死 10/06 12:04
14F:→ KawasumiMai:一万一千四... 10/06 12:04
15F:→ kerash:不客气,我也刚刚才想起红字的方法 10/06 12:04
16F:推 scribeTW:document.chkform['attr[]'][0] 更简单的做法 10/06 12:13
17F:→ KawasumiMai:wow,竟然直接当作form的子物件呼叫了.... 10/06 12:15
18F:→ KawasumiMai:scribeTW大的方法也成功了,连element都不用打了.... 10/06 12:16