我需要表单验证器的帮助。它可以验证文本等所有内容,但我需要它来验证无序列表中是否至少包含1个元素/项。
我最初的想法是在无序列表中计算childNodes,但使用.childNodes.length不起作用。我不知道为什么,可能是因为我在javascript函数中混杂了jQuery?
以下是文本字符串验证功能的示例:
function checkLength( o, n, min, max ) {
if ( o.val().length > max || o.val().length < min ) {
o.addClass( "ui-state-error" );
updateTips( "Length of " + n + " must be between " +
min + " and " + max + "." );
return false;
} else {
return true;
}
}
以下是我的无序表格验证功能(不起作用):
function checkTags( t ) {
if (t.childNodes.length < 1) {
t.addClass( "ui-state-error" );
updateTips( "Add at least 1 genre/subgenre." );
return false;
}
else {
return true;
}
}
无序列表由用户填充,从选择列表中选择值并单击javascript链接后,如果这很重要。在此先感谢您的帮助!
答案 0 :(得分:0)
假设t
是jQuery对象,请尝试
if (!t.children().length) {
t.addClass('ui-state-error');
}
这是一个供您参考的链接:http://api.jquery.com/children/
答案 1 :(得分:0)
如果 t 是一个元素,那么 t.childNodes 包括所有子节点,包括文本节点以及元素节点。许多浏览器在DOM中插入空文本节点来表示标记中的空格,因此在某些浏览器中,下面的div:
<div>
<p></p>
</div>
有3个子节点,其他只有一个。您可以使用以下方法检查子元素节点:
if (element.getElementsByTagName('*').length) // element has child element nodes