2011-09-23 169 views
0

我有一个页面,我有一个表,它由每行内部的3个文本框组成,我也有一个页面底部的添加行按钮,通过单击此应该添加一个新行到表中,但它应该仅当表中的所有输入都不为空时触发此操作。无论如何,我已经做了一点点,但它不适合我。任何人都可以看看我的代码,并帮助我理清这有什么问题吗?如何检查表内的文本框值是否为空?

我在JQuery的已经做了以下

// Add functionality Scripts 

$('#teacherAdd').live('click', function(event) { 
    if(IsValidTableContent()){ 

     // my code to add new row 

      return false; 
     }else{ 
      event.preventDefault(); 
     } 
}); 


function IsValidTableContent(){ 
    var isvalid = false; 
    $('#adminList tbody tr td input:text').each(function(){ 
      if($(this).val() == ''){ 
       return isvalid; 
      }else{ 
       isvalid = true; 
       return isvalid; 
      } 
    }); 
    return isvalid; 
} 

也给出了类似的,你可以说如何通过表内的一个选择框重复检查的第一个选项是否被选中呢?

+0

你可以包含你的HTML吗? – JohnFx

+0

'txtValue = $(this).val(); if(jQuery.trim(txtValue).length> 0){}'试试这个.. –

回答

5

事情是这样的:

function IsValidTableContent(){ 
    var isvalid = true; 
    $('#adminList tbody tr td input:text').each(function(){ 
     if ($(this).val() === '') { 
      isvalid = false;     
      return false; // breaks out of each loop 
     } 
    }); 
    return isvalid; 
} 

或者:

function IsValidTableContent(){ 
    return $('#adminList tbody tr td input:text').filter(function() { return $(this).val() === '';}).length === 0; 
} 
+0

同样你可以说如何遍历表中的选择框来检查第一个选项是否被选中? –

+1

将您的选择器更改为:'$('input:text,select','#adminList tbody tr td')' – RoccoC5

0

我注意到的第一件事情是,如果其中一个是true,则将isvalid设置为true,然后对所有其他设置返回true,因为您没有重置它,只返回true;或返回false;并跳过变量设置。

编辑

好吧,我明白你正在尝试做的,变量是倒退。你想从真正开始,如果有任何错误设置为false,然后它将返回false。目前如果有的话,即使其他人都是假的,它也会返回true。应工作(前提是您的选择是正确的)

0

尝试删除你的函数的最后一个return语句。