表单验证 - 无序列表

时间:2012-01-19 02:35:15

标签: javascript jquery forms list validation

我需要表单验证器的帮助。它可以验证文本等所有内容,但我需要它来验证无序列表中是否至少包含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链接后,如果这很重要。在此先感谢您的帮助!

2 个答案:

答案 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