我有一个表单,并希望验证它包含的一些字段是否有条目。
因此我有以下内容:
var requiredFields = array(
'Delivery_first_name',
'Delivery_last_name',
'Delivery_address',
'Delivery_city',
'Delivery_zip',
'Delivery_phone'
);
for(var field in requiredFields)
{
if(document.ezpay.field.value.length == 0)
{
document.ezpay.field.style.cssText = 'background:red;';
}
}
然而它似乎没有起作用。我的想法是field
“的if(document.ezpay.field.value.length == 0)
部分没有被评估。
换句话说,语句正在执行if(document.ezpay.field.value.length == 0)
而不是if(document.ezpay.Delivery_first_name.value.length == 0).
任何人都可以证实这种信念,更重要的是能给我一些关于上述原因无效的指导吗?
上述目标是遍历已定义的字段,并为任何空白字段将CSS样式背景设置为红色。
谢谢! :)
答案 0 :(得分:1)
首先,您不应该使用for...in
迭代数组,因为该构造用于枚举对象属性。
其次,当您想要访问名称包含在名为field
的变量中的属性时,您尝试访问名为field
的属性。尝试:
for (var i = 0, j = requiredFields.length; i < j; i++)
{
if (document.ezpay[requiredFields[i]].value.length == 0)
{
document.ezpay[requiredFields[i]].style.cssText = 'background:red;';
}
}
答案 1 :(得分:0)
只需将输入字段设置为具有相同的名称&amp; id属性和使用:
if(document.getElementById(field).value.length == 0)
{
document.getElementById(field).style.cssText = 'background:red;';
}
答案 2 :(得分:0)
也许:
document.ezpay[field].value.length
我不确定js会在使用点表示法时评估你的field
字符串。
答案 3 :(得分:0)
NickFitz有正确的想法
以下是我在普通JS中的表现
var requiredFields = ['Delivery_first_name',
'Delivery_last_name',
'Delivery_address',
'Delivery_city',
'Delivery_zip',
'Delivery_phone'];
function validate(theForm) {
for(var i=0,n=requiredFields.length;i<n;i++) {
var field = theForm[requiredFields[i]];
if (field.value.length == 0) {
field.style.backgroundColor ="red";
return false;
}
else field.style.backgroundColor ="white";
}
return true; // allow submit
}
window.onload=function(){
document.forms[0].onsubmit=function() { return validate(this);}
}
如果您希望所有空字段变为红色,请执行此操作
function validate(theForm) {
var isOk = true;
for(var i=0,n=requiredFields.length;i<n;i++) {
var field = theForm[requiredFields[i]];
if (field.value.length == 0) {
field.style.backgroundColor ="red";
isOk=false;
}
else field.style.backgroundColor ="white";
}
return isOk; // allow or disallow submit
}
答案 4 :(得分:-1)
嗯...尝试为字段
指定属性“id”<input type="text" name="FIELDNAME" id="FIELDNAME" />
然后你可以使用
for(var field in requiredFields){
var elem = document.getElementById(field);
if(elem.value == '') {
//your proccess
}
}
或者你可以尝试使用jquery和jquery验证...更容易和可定制..