0
我已經爲我的表單(調查)獲得了此驗證腳本。它遍歷所有答案,並檢查它是否爲單選按鈕,複選框,輸入或textarea問題。在此基礎上,它分別檢查輸入的檢查值(無線電和複選框)或「(」input/textarea)「之外的值(它並不是很多,但它是開始的)。如果字段爲空,requiredMessage()會設置警告,或者在字段被用戶更正時刪除警告。在此jQuery驗證中優化值檢查
我正在尋找一種方法來優化此代碼,因爲它看起來非常重複,但我不太確定如何開始。雖然這些街區有一些共同之處,但它們似乎並不適合一種通用檢查。歡迎任何幫助!
注意:我不期望一個完整的審查版本,我只需要在哪裏尋找改進的方向,或者如何使用jQuery將這些驗證檢查鏈接在一起。
這裏的JavaScript:
// validate the form
function validate(event){
var sendform = true;
$(".questionnaire-question-answer").each(function(){
// radiobutton case
if($(this).find("input:radio").length){
if($(this).find("input:radio:checked").length == 0){
requiredMessage(this, "invalid");
sendform = false;
} else {
requiredMessage(this, "valid");
}
}
// checkboxes case
else if($(this).find("input:checkbox").length){
if($(this).find("input:checkbox:checked").length == 0){
requiredMessage(this, "invalid");
sendform = false;
} else {
requiredMessage(this, "valid");
}
}
// single freetext case
else if($(this).find("input:text").length == 1) {
if($(this).find("input:text").val() == ""){
requiredMessage(this, "invalid");
sendform = false;
} else {
requiredMessage(this, "valid");
}
}
// multiple freetext case
else if($(this).find("input:text").length > 1) {
var content = false;
$(this).find("input:text").each(function(){
if($(this).val() != ""){
content = true;
requiredMessage(this, "valid");
}
});
if(content == false){
requiredMessage(this, "invalid");
sendform = false;
}
}
// textarea case
else if($(this).find("textarea").length){
if($(this).find("textarea").val() == ""){
requiredMessage(this, "invalid");
sendform = false;
} else {
requiredMessage(this, "valid");
}
}
});
// check whether the form has errors
if(sendform == true){
return true;
} else {
event.preventDefault();
}
}
謝謝,這看起來更多的是我想要的。我會給它一個鏡頭,然後回來! – 2010-10-29 10:15:11
@Justus - 需要一個調整,添加':text'或'[type = text]'選擇器到輸入並進行值檢查,確保在測試時獲得更新。 – 2010-10-29 10:16:53
它就像一個魅力!我很難想到更抽象,但我正在一步一步學習:) – 2010-10-29 10:23:30