使用动态输入进行表单验证

时间:2015-05-16 15:11:36

标签: jquery forms validation

问题一

用户可以单击按钮以动态地将输入附加到表。提交后,应验证每个输入。以下内容适用于第一个附加输入,但不适用于后面的所有输入为空时(因为跨度已存在):

     $('input[id^=item_name]').each(function() {
        name = $(this).closest('tr').find('input[id^=item_name]').val();
        if(name==null || name==''){
            if ($('span:contains("Enter an item name")').length==0){
                $(this).closest('td').addClass('has-error');
                $(this).after('<span class="error" style="color:red;font-size:14px;">Enter an item name</span>');
            }
        }
    });

如果我将$('span:contains("Enter an item name")')更改为$(this).closest('span:contains("Enter an item name")').length==0,则只会返回&#39; 0&#39;。我在哪里错了?

问题二

用户应立即收到对其中一个动态输入的更改满足错误的反馈。

   $('input[id^=item_name]').focusout(function(){
        name = $(this).closest('tr').find('input[id^=item_name]').val();
        if(name==null || name==''){
            if ($('span:contains("Enter an item name")').length==0){
                $(this).closest('td').addClass('has-error');
                $(this).after('<span class="error" style="color:red;font-size:14px;">Enter an item name</span>');
            }
        }
        else {
            $('span:contains("Enter an item name")').remove();
        }   
    });

我可能在$('span:contains("Enter an item name")')处遇到同样的问题。你的想法很感激。

1 个答案:

答案 0 :(得分:0)

$('span:contains("Enter an item name")')更改为$(this).closest('td').find('span:contains("Enter an item name")')似乎有效。