問題陳述: 我需要編寫一個代碼,無論是在發送表單之前都會檢查所有必填字段是否填滿。如果並非所有字段都已填寫,則需要使用紅色進行分配,而不是發送表單。簡單的表單驗證。面向對象
現在代碼存在這樣那樣:
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