2010-04-30 60 views
0

嘗試調試) ')S,.VAL(' 的東西,基本上.trim(S和。長度是一個文本輸入作爲HTML如下(部分):jQuery驗證是()和多個CSS類

<form id="Kontaktanfrage" method="post" action="tests/testform/"> 
... 
<textarea cols="50" rows="8" id="el_12" name="FORM[Kontaktanfrage][el_12]" title="Ihre Nachricht: *" class="textarea required"></textarea> 
... 
</form> 

的JavaScript:

function validateField(formId, fieldId) { 
if (fieldId) { 
    var element = "form#"+formId+" input#"+fieldId; 
    var fieldValue = jQuery.trim(jQuery(element).val()); 
    var fieldLength = fieldValue.length; 
    var fieldError = ""; 
    if ($(element).is('.textarea.required') && fieldLength == 0) { 
     fieldError = "error message"; 
    } 
} 

}

以上if檢查是永遠不會true

使用JQuery:1.4.1。

在網上看過其他例子,我看不出有什麼區別。隨時在FireBug中(http://www.initiat.de/tests/testform/)進行測試。任何幫助表示讚賞,不能看到我做錯了什麼。

回答

1

你創建你選擇假定所有字段都是輸入元素嘗試。 TextArea是一個不同的元素,您的選擇器應該反映這一點。我不認爲,如果你改變這一行

var element = "form#"+formId+" input#"+fieldId;

這個

var element = "form#"+formId+" #"+fieldId;

+0

感謝Ben,我忘記了關於textarea的所有信息,這在技術上不屬於'input'類型,這是我在HTML中最大的煩惱之一。感謝您的發現:) – Alex 2010-04-30 21:18:16

1

爲什麼不使用

.hasClass() 
+0

我需要檢查2類,hasClass()只檢查2如果性能將大受歡迎它按字面順序排列,不以任何順序排列。我需要靈活性 – Alex 2010-04-30 19:30:51

+0

你總是可以去element.hasClass(class1)&& element.hasClass(class2) – Tejs 2010-04-30 19:32:38

0

if ($(element).hasClass('textarea') && $(element).hasClass('required') && fieldLength == 0) { 
     fieldError = "error message"; 
    }