2012-08-16 107 views
1

我有7个类别名称为“dd”的下拉列表。我有7个文本框的类名=“tt”。每个文本框对应于每个下拉菜单。 现在,我要检查检查具有相同类名的多个元素的值

if(dropdown value is equal to 1) 
    text box can not be empty. 

所以要做到这一点我在做什么:

function checkOpenHours() { 
     if ($('.dd').val() == 1 && $('.tt').val() == "") { 

       alert("Please select an opening hour."); 
       return false; 

     } 
    } 

和我打电话像

<asp:Button ID="btnSave" runat="server" Text="Update hour" Height="35px" 
     onclick="btnSave_Click" OnClientClick="return checkOpenHours()"/> 

此功能,但问题是,这仅适用于第一个下拉菜单和文本框。 它不适用于其他6下拉和文本框..!

我在做什么错?任何帮助?

回答

2

.val()方法返回jQuery对象中第一个元素的值。

你可以这样做,而不是:

function checkOpenHours() { 
    var $dd = $('.dd'), 
     $tt = $('.tt'), 
     i; 

    for (i = 0; i < $dd.length; i++) { 
     if ($dd.eq(i).val() == 1 && $tt.eq(i).val() == "") { 
      alert("Please select an opening hour."); 
      return false; 
     } 
    } 
} 

我在做什么有第一把的$('.dd')$('.tt')结果为变量,因为虽然在循环使用$('.dd')$('.tt')会工作这将是低效因为它会在每次迭代中重新创建它们(完成DOM访问)。然后我使用.eq() method获取当前i索引中的元素。

我使用标准for而不是jQuery .each(),因为它可以很容易地从外部函数返回。

+0

hi..thanks..sorry关于最后一个注释。我删除了那个。问题是,即使我在文本框中输入文本,它仍然显示警报..!你有什么线索? – kandroid 2012-08-16 09:38:23

+0

似乎在这里工作得很好:http://jsfiddle.net/nnnnnn/M9YP8/ - 如果你有更多的问题,你需要展示更多的代码,也许在你自己的小提琴中...... – nnnnnn 2012-08-16 09:46:02

1

val()只返回jQuery集合中第一个元素的值。

您应该为此使用.each()

喜欢的东西

var allOkay = true; 
$('.dd').each(function(id, item) { 
    var $dropDown = $(item); 
    var $textbox = $dropDown.siblings('.tt') // You'll need to change this according to your HTML! 

    if ($dropDown.val() == 1 && $textbox.val() == '') { 
     allOkay = false; 
    } 
}); 
if (!allOkay) { 
    alert("Ze opening hourz! You did not enter zem!") 
} 
相关问题