问题陈述: 我需要编写一个代码,无论是在发送表单之前都会检查所有必填字段是否填满。如果并非所有字段都已填写,则需要使用红色进行分配,而不是发送表单。简单的表单验证。面向对象
现在代码存在这样那样:
function formsubmit(formName, reqFieldArr){
var curForm = new formObj(formName, reqFieldArr);
if(curForm.valid)
curForm.send();
else
curForm.paint();
}
function formObj(formName, reqFieldArr){
var filledCount = 0;
var fieldArr = new Array();
for(i=reqFieldArr.length-1; i>=0; i--){
fieldArr[i] = new fieldObj(formName, reqFieldArr[i]);
if(fieldArr[i].filled == true)
filledCount++;
}
if(filledCount == fieldArr.length)
this.valid = true;
else
this.valid = false;
this.paint = function(){
for(i=fieldArr.length-1; i>=0; i--){
if(fieldArr[i].filled == false)
fieldArr[i].paintInRed();
else
fieldArr[i].unPaintInRed();
}
}
this.send = function(){
document.forms[formName].submit();
}
}
function fieldObj(formName, fName){
var curField = document.forms[formName].elements[fName];
if(curField.value != '')
this.filled = true;
else
this.filled = false;
this.paintInRed = function(){
curField.addClassName('red');
}
this.unPaintInRed = function(){
curField.removeClassName('red');
}
}
功能是这样造成的:
<input type="button" onClick="formsubmit('orderform', ['name', 'post', 'payer', 'recipient', 'good'])" value="send" />
现在的代码工作。但我想在其中添加“动态”。
对我来说这是必要的:本质上保留一个初始代码,以添加监听表单域(仅用于填充)。
例如,当字段用红色分配并且用户开始填充时,它应该变成白色。
事实上,我需要添加事件监听:onChange,模糊窗体的空白字段。因为它在初始代码的限制范围内。
如果我所有的代码 - 完全废话,让我知道它。对我而言,它要改变使用面向对象的方法。
给我纯 JavaScript的解决方案,请。 JQuery的 - 伟大的自由,但它不为方法对我来说。
@Aaron Digulla,jQuery在给定的项目中没有使用,我不想仅仅为了表单检查而添加它。对于“类”我同意,最好将“必需”类用于必要的字段,而不是将它们的名字在函数中进行排列。 – Kalinin 2010-04-07 09:02:44
在这种情况下,请查看jQuery的源代码,以便如何实现此行为并将其复制。 – 2010-04-07 09:05:39
@Aaron Digulla,在我看来,这对我来说是非常不安的问题。有很多都堆积如山。不明白。 – Kalinin 2010-04-07 09:15:05