我有一个带有复选框的表单,这些复选框在以这种方式检查时将值存储在数组中:
<input type='checkbox' name='listaction[]' value='2010102909103530'>
在提交时,我会检查哪些复选框已经过检查,我会用它做点什么。
当只选择了一个项目时,我的问题就出现了,那么listaction不是一个数组而只是一个字符串......
我该如何处理?
它使用firesup desubmit()
的提交按钮启动这些是处理功能:
function desubmit()
{
if(get_args()==false) {alert("U hebt geen treinen geselecteerd!");return false;}
if(labelling(true)) return false;
}
function Check(chk)
{
for (i=0; i < chk.length; i++) chk[i].checked=document.ListActionForm.Check_ctr.checked ;
}
function labelling(s)
{
notrains="U hebt geen treinen geselecteerd!"
selectval=document.ListActionForm.la.options[document.ListActionForm.la.selectedIndex].value;
if(selectval=='exportoptions') {popUpWin('form.php?exportconfig=1','console3',470,470);}
else if(selectval=='newlabel'&&!s) {jPrompt('Nieuwe Lijst:','Default', 'Maak nieuwe lijst (Max 20 karakters)', function(r) {if(r) {if(r.length>20){alert("Gekozen naam lijst mag maximum 20 tekens lang zijn (Overige tekens worden automatisch verwijderd)");r=r.substr(0,20);};document.ListActionForm.newlabel.value=r;document.getElementById('shownewlabel').innerHTML='[ Nieuwe Lijst: '+r+' ]';}});document.getElementById('popup_prompt').maxlength=5;}
else if(selectval=='export:pdf') {if(arg=get_args()) get_page('/PDF/pdf.php','ids',arg);else alert(notrains);}
else if(selectval=='export:csv') {if(arg=get_args())get_page('?export=csv','ids',arg);else alert(notrains);}
else if(selectval=='export:xlsapp') {if(arg=get_args())get_page('?export=excelvbs','ids',arg);else alert(notrains);}
else if(selectval=='export:xlsapptxt') {if(arg=get_args())get_page('?export=excelvbstxt','ids',arg);else alert(notrains);}
else return false;
return true;
}
function get_args()
{
s=chkboxa2str(document.ListActionForm['listaction[]']);
if(s.length<8)return false;
else return s;
}
function chkboxa2str(chkbox_a) {
var list = "";
for(var i = 0; i < chkbox_a.length; i++){ if(chkbox_a[i].checked) { list += chkbox_a[i].value + " "; } }
return list;
}
答案 0 :(得分:1)
您可以检查它是否是字符串并以其他方式处理它。使用instanceOf:
if(listaction instanceOf String) ...
答案 1 :(得分:0)
我现在完全失去了......
我添加了这个函数来测试我的数组的类型
function test (obj) {
var type = typeof obj;
if (type == 'object') {
if (obj.getDate) return 'Date';
if (obj.split) return 'String';
return object;
}
return type;
}
我在get_args函数中使用此函数调试了一个调试行,如下所示: function get_args() { test(document.ListActionForm ['listaction []']); S = chkboxa2str(document.ListActionForm [ '的listAction []']); if(s.length <8)返回false; 别的回归; }
突然只有在选择了一个元素时才会识别数组(我猜为字符串)但是当选择了多个复选框时它才会被识别
测试线甚至没有做任何事情......
这是一个错误吗?
答案 2 :(得分:0)
为了使它更简单,我创建了一个完全有效的html页面,其中bug代表了自己。
要模拟问题,只需使用两个html输入复选框元素运行一次 - &GT;选中一个复选框并按提交 - &gt;有用 - &GT;现在删除一个输入复选框字段并选中剩余的复选框&amp;提交 - &gt; Bamm不起作用......
<html>
<head>
<script>
function Check(chk)
{
for (i=0; i < chk.length; i++) chk[i].checked=document.ListActionForm.Check_ctr.checked ;
}
function desubmit()
{
if(get_args()==false) {alert("$t_notrains_selected");return false;}
if(labelling(true)) return false;
}
function labelling(s) {return true;}
function get_args()
{
s=chkboxa2str(document.ListActionForm['listaction[]']);
if(s)alert(s);
if(s.length<8)return false;
else return s;
}
function chkboxa2str(chkbox_a) {
var list = "";
for(var i = 0; i < chkbox_a.length; i++){ if(chkbox_a[i].checked) { list += chkbox_a[i].value + " "; } }
return list;
}
</script>
</head>
<body>
<form action="?h=1296078874" method="post" name="ListActionForm" onsubmit="return desubmit()">
<input type='checkbox' name='listaction[]' value='2010102909103530'> Testbox 1<br>
<input type='checkbox' name='listaction[]' value='2010102909103532'> Testbox 2<br>
<input type="Submit" name="Submit" value="Versturen" >
</form>
</body>
</html>