JQuery在邻近其他元素的位置查找元素

时间:2012-06-08 14:28:56

标签: javascript jquery

<asp:GridView ID="GridView1">
  <Columns>
     <asp:TemplateField>
       <ItemTemplate>
           <asp:DropDownList></asp:DropDownList> 
           <input type="tel" id="contract">
       </ItemTemplate>
     </asp:TemplateField>
     <asp:TemplateField>
       <ItemTemplate>
           <asp:Label><asp:Label>
           <asp:Label><asp:Label>
       </ItemTemplate>
     </asp:TemplateField>
     <asp:TemplateField>
       <ItemTemplate>
           <input type="tel" id="Hours">
       </ItemTemplate>
     </asp:TemplateField>
  </Columns>
</asp:GridView>

我正在尝试使用JQuery作为验证GridView中模板字段的快捷方法。例如,如果我的DropDownList的SelectedValue = RENT READY,那么Hours输入不应为空。所以我想使用JQuery来计算所有时间的数量,我可以缩小到具有RENT READY值的select,其相应的Hours输入=空白。我试过了:

$("#GridView1 select[value=RENT READY]").find("input[type=tel]").eq(1)

$("#GridView1 select[value=RENT READY]").next("input[type=tel]").next("input[type=tel]")

$("#GridView1 select[value=RENT READY]").next("input[type=tel value=''])

但总是返回undefined。选择件工作得很好。找到值为RENT READY的选择没有问题。这是第二部分,我试图将其进一步缩小到只有选项,输入相对于2门向下,空白值不起作用。

enter image description here

编辑:最终代码

$('#GridView1 select').filter(function () {
            return ($(this).val() == 'RENT READY');
        }).closest('tr').find('input[type=tel]').filter(function () {
            return ($(this).val() == "" && $(this).attr("id") == "Hours");
        }).length

2 个答案:

答案 0 :(得分:1)

我认为这不是选择价值“RENT READY”下拉列表的有效方法。

你应该像下面这样做,

$('#GridView1 select').filter(function () {
    return ($(this).val() == 'RENT READY');
}) 

要让tel找到最近的tr并进行查找..或者您可以选择父级.next .next

$('#GridView1 select').filter(function () {
    return ($(this).val() == 'RENT READY');
}).closest('tr').find('input[type=tel]')

答案 1 :(得分:0)

您需要获取在select中选择的选项。像这样:

$('#GridView1 select#GridViewStatus option[value="RENT READY"]:selected"').closest('input[type="tel"]')

在末尾添加.size(),如果找不到,则会给0;如果找到,则为> 0。