2010-05-07 17 views
0

我有几个选择框和文本框与相同的类,我有以下声明。 修订JQuery。检查相同类的选择框和文本框的值,有可能吗?

//This goes through each visible tr of the table with class notEmptyTable 
$('.notEmptyTable tr:visible').each(function(index) { 

    //This checks that the elements with class checkTextBox1IsNotEmpty its not Empty. 
    if ($('.checkTextBox1IsNotEmpty ').val() != "") { 
     if ($('.selTxtClass:visible').val() == "") { 
      $('.selTxtClass:visible').focus(); 
     } 
    }  
}); 

更新HTML

<table> 
    <tr> 
     <td><input type="text" id="txtBoxa1" class="checkTextBox1IsNotEmpty"/></td> 
     <td><input type="text" id="txtBoxb1" /></td> 
     <td><select id="selc1" class="selTxtClass" onchange="javascript:if (this.value = "other")txtBoxd1.style.display = 'block'"/> 
      <input id="txtBoxd1" style="display:none;" class="selTxtClass"/> 
     </td> 
    </tr> 

    <tr> 
     <td><input type="text" id="txtBoxa1" class="checkTextBox1IsNotEmpty"/></td> 
     <td><input type="text" id="txtBoxb1" /></td> 
     <td><select id="selc1" class="selTxtClass" onchange="javascript:if (this.value = "other")txtBoxd1.style.display = 'block'"/> 
     <input id="txtBoxd1" style="display:none;" class="selTxtClass"/> 
     </td> 
    </tr> 

    <tr> 
     <td><input type="text" id="txtBoxa1" class="checkTextBox1IsNotEmpty"/></td> 
     <td><input type="text" id="txtBoxb1" /></td> 
     <td><select id="selc1" class="selTxtClass" onchange="javascript:if (this.value = "other")txtBoxd1.style.display = 'block'"/> 
     <input id="txtBoxd1" style="display:none;" class="selTxtClass"/> 
     </td> 
    </tr> 

</table> 

如果我做一个警报($( 'selTxtClass:可见')VAL()),它作为不确定的。

我想检查这些元素的值是否为空,但是我不能看到这个if语句有什么问题,请问您能帮我一下吗?

非常感谢。

+0

您还需要发布标记:) – 2010-05-07 11:48:39

+0

@ Nick Craver:给我一秒钟。 – Amra 2010-05-07 11:55:09

回答

2

我想这是一个更大的循环的一部分,目前虽然你正在检查所有元素与班,不是那些只是在该行,调整它给$() consutrctor一个背景下,在这种情况下,行,像这样:

$('.notEmptyTable tr:visible').each(function(index) { 
    //Other loop stuff 
    if ($('.checkTextBox1IsNotEmpty', this).val() != "") { 
     if ($('.selTxtClass:visible', this).val() == "") { 
      $('.selTxtClass:visible', this).focus(); 
     } 
    }  
}); 

此检查class="checkTextBox1IsNotEmpty"当前行,我相信这是WH在你之后...如果不是忽略这个没用的答案:)另外,不直接相关这个问题,但不要在无效的HTML同一ID多次,你有什么用,并可能导致许多其他副作用。

+0

我们都忘了“回报假”;当元素被找到时。在搜索到的元素被找到时制动“每个”循环。 – 2010-05-07 12:24:03

+0

@Maksim - 我同意这通常是你想要的,但我不知道在这里的大循环中发生了什么,为塞萨尔输入时间:) – 2010-05-07 12:27:31

+0

我同意,在这种情况下,它不是一个大问题,但是这只是一个很好的做法。这并不困难,它是唯一的代码行。 – 2010-05-07 12:34:15

4

试试这个

$('.selTxtClass:visible').each(function(i,e){ 
    if(e.val()==''){ 
     e.focus(); 
     return false; 
    } 
}); 
+0

无需一个'的.html()'检查输入元素,删除,它是+1的正确性,从我:) – 2010-05-07 11:49:01

+0

谢谢您非常快速重播,我要试试你的解决方案,但如果我想知道是避免.each()的一种方式,因为它已经在另一个.each()中。谢谢。 – Amra 2010-05-07 11:49:17

+0

@尼克Craver,谢谢你是对的。 – 2010-05-07 12:00:04

相关问题