Javascript 使用gen_validatorv4.js使用Internet Explorer验证阵列中的项目
我正在开发一个使用javascript编码器的gen_Validator V4脚本的表单。(过去曾使用过它并取得了巨大成功)。这个表格是为了让我工作的银行的出纳员可以把信息放在作废的支票上,发送回我们的会计部门,然后作为Foxtrot的csv被踢出去 我已经在Firefox和Chrome中测试了这个脚本,没有问题。然而,在IE8和IE9中,我得到消息“行#1:您的帐号必须是一个号码!”,这是一个验证错误,因为没有在该行中添加号码,据我所知,这是因为我使用的是数组。当尝试在maxlen下执行此操作时,它将再次重复并出现错误。我使用数组(由上一个表单创建),因为在任何给定的时间都可能提交一组数量可变的检查 有人知道如何让它在InternetExplorer中正常工作吗 更新: 我从js方法中添加了array-0.9.js文件,这稍微解决了这个问题。现在,它正确地验证了单选按钮前的第一行项目,但在该点失败。如果我删除单选按钮检查,它将在num和maxlen验证的第二行失败。请检查小提琴的更新代码,并添加第二行 HTML代码:Javascript 使用gen_validatorv4.js使用Internet Explorer验证阵列中的项目,javascript,arrays,internet-explorer,validation,Javascript,Arrays,Internet Explorer,Validation,我正在开发一个使用javascript编码器的gen_Validator V4脚本的表单。(过去曾使用过它并取得了巨大成功)。这个表格是为了让我工作的银行的出纳员可以把信息放在作废的支票上,发送回我们的会计部门,然后作为Foxtrot的csv被踢出去 我已经在Firefox和Chrome中测试了这个脚本,没有问题。然而,在IE8和IE9中,我得到消息“行#1:您的帐号必须是一个号码!”,这是一个验证错误,因为没有在该行中添加号码,据我所知,这是因为我使用的是数组。当尝试在maxlen下执行此操作
<form name="checkvoid" method="post">
<table id="mytable" border="1">
<tbody>
<tr>
<td nowrap>Branch Number:
<input type="text" name="bid" value="1" size="3">
</td>
<td colspan="6">
<input type="submit" value="Submit Voided Checks">
</td>
</tr>
<tr>
<td align="center">Date</td>
<td align="center">Account #</td>
<td align="center">Serial #</td>
<td align="center">Amount</td>
<td>MO</td>
<td>CC</td>
</tr>
<tr class="check">
<td>
<select name="1[date][month]">
<option value="1">Jan</option>
<option value="2">Feb</option>
<option value="3">Mar</option>
<option value="4" selected>Apr</option>
<option value="5">May</option>
<option value="6">Jun</option>
<option value="7">Jul</option>
<option value="8">Aug</option>
<option value="9">Sep</option>
<option value="10">Oct</option>
<option value="11">Nov</option>
<option value="12">Dec</option>
</select>
<select name="1[date][day]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29" selected>29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<select name="1[date][year]">
<option value="2012">2012</option>
<option value="2013" selected>2013</option>
</select>
</td>
<td>
<input type="text" name="1[actnum]" size="10" value="1">
</td>
<td>
<input type="text" name="1[serial]" size="10" value="1">
</td>
<td>$
<input type="text" name="1[amount]" size="10" value="1">
</td>
<td>
<input type="radio" name="1[type]" value="1" CHECKED>
</td>
<td>
<input type="radio" name="1[type]" value="2">
</td>
<tr>
<td colspan="6">
<input type="checkbox" name="certify" value="1">I certify that all the information above is correct.</td>
</tr>
</tbody>
</table>
<input type="hidden" name="action" value="process">
我在IE中不使用数组就可以工作:在我删除了包装name属性值的
[]
括号后,它工作得很好
至
显然,您必须更新js以反映这一点。问题是使用数字作为数据类型造成的。我不知道怎么处理。其他人给了我这个花絮,我可以通过创建一个2D数组来修复它
我也有同样的问题,我更改了add_验证函数。 您可以将gen_validatorv4.js中的add_validation函数替换为:
函数添加\u验证(itemname、描述符、errstr)
{
var条件=null;
如果(arguments.length>3)
{
条件=参数[3];
}
如果(!this.formobj)
{
警报(“错误:表单对象未正确设置”);
返回;
}
var itemobj=this.formobj[itemname];
var i=0;
for(itemobj中的var键)
{
i=parseInt(i)+1;
var errtmp=“”;
如果(typeof(itemobj[key])!=“object”| | itemobj[key]==null | | itemobj[key].name==null)继续;
if(itemobj[key].name.toString().indexOf(“[]”)大于1)
{
if(itemobj[key].length&&isNaN(itemobj[key].selectedIndex))
//用于单选按钮;不用于“选择”项
{
//itemobj[key]=itemobj[key][0];
}
如果(!itemobj[key])
{
警报(“错误:无法获取名为:“+itemname”的输入对象);
返回;
}
if(true==this.validate\u on\u killfocus)
{
itemobj[key].onblur=handle\u item\u on\u focus;
}
如果(!itemobj[key].validationset)
{
itemobj[key].validationset=newvalidationset(itemobj[key],this.show_errors_在一起);
}
if(typeof(itemobj[key].validationset.add)=“函数”)
{
var errtmp=errstr.replace(“{num}”,i);
itemobj[key].validationset.add(描述符、errtmp、条件);
itemobj[key].validatorobj=this;
}
}
其他的
{
var itemobj=this.formobj[itemname];
if(itemobj.length&&isNaN(itemobj.selectedIndex))
//用于单选按钮;不用于“选择”项
{
itemobj=itemobj[0];
}
如果(!itemobj)
{
警报(“错误:无法获取名为:“+itemname”的输入对象);
返回;
}
if(true==this.validate\u on\u killfocus)
{
itemobj.onblur=在焦点上处理项目;
}
如果(!itemobj.validationset)
{
itemobj.validationset=新的validationset(itemobj,this.show_errors_一起);
}
itemobj.validationset.add(描述符、errstr、条件);
itemobj.validatorobj=此项;
打破
}
}
}
js方法在某些方面有所帮助,但在验证数组时仍然存在问题。
var frmvalidator = new Validator("checkvoid");
frmvalidator.addValidation("bid", "req", "Please enter your Branch Number!");
frmvalidator.addValidation("bid", "num", "Your Branch Number should be a Number!");
frmvalidator.addValidation("1[actnum]", "req", "Line #1: You must enter an account number!");
frmvalidator.addValidation("1[actnum]", "num", "Line #1: Your Account Number must be a number!");
frmvalidator.addValidation("1[actnum]", "maxlen=8", "Line #1: Your Account Number cannot exceed 8 numbers!");
frmvalidator.addValidation("1[serial]", "req", "Line #1: You must enter a serial number!");
frmvalidator.addValidation("1[serial]", "num", "Line #1: Your Serial Number must be a number!");
frmvalidator.addValidation("1[serial]", "maxlen=10", "Line #1: Your Serial Number cannot exceed 10 numbers!");
frmvalidator.addValidation("1[amount]", "req", "Line #1: You must enter an amount!");
frmvalidator.addValidation("1[amount]", "num", "Line #1: Your Amount must be a number!");
frmvalidator.addValidation("1[type]", "selone", "Line #1: You must select either Money Order or Cashier's Check!");
frmvalidator.addValidation("certify", "shouldselchk", "Your must certify that the form is correct!");
stuff[#][fieldname]
frmvalidator.addValidation("stuff[1][actnum]", "req", "Line #1: You must enter an account number!");