我有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下拉列表和文本框.. !!
我做错了什么?有什么帮助吗?
答案 0 :(得分: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()
,因为它可以很容易地从外部函数返回。
答案 1 :(得分: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!")
}