2012-06-08 2 views
0
<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> 

GridView에서 템플릿 필드의 유효성을 검사하는 빠른 방법으로 JQuery를 사용하려고합니다. 예를 들어, 내 DropDownList의 SelectedValue가 RENT READY이면 Hours 입력을 비워 두어서는 안됩니다. 그래서 JQuery를 사용하여 모든 시간의 카운트를 얻고 RENT READY의 값으로 select에 한정 할 수 있습니다. 해당 시간 입력 = 비어 있습니다. JQuery에서 다른 요소에 근접한 요소 찾기

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

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

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

을하지만 항상 정의되지 않은 반환 : 나는 시도했습니다. 선택 작품은 잘 작동합니다. 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 
+4

렌더링 된 HTML을 제공해야합니다. – gdoron

+0

가 추가되었습니다. 죄송합니다. 조금 작 으면. – jmease

답변

1

내가 그 값 "임대 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]') 
+0

업데이트 된 게시물보기 .. 어떻게 진행되는지 알려주세요. –

+0

실제로 기다립니다. 그 덕분에 다음 입력을 찾는데 도움이되었지만 양식의 유효성을 검사하기 위해 얼마나 많은 인스턴스가 있는지 찾는 데 도움이되지 않습니다. $ ('# GridView1 select')로 변경했습니다. filter (function() { return ($ (this) .val() == 'RENT READY'); }). (1) .filter (function() { return ($ (this) .val() == ""); }) 길이가 1을 반환하는 길이 RENT READY가있는 첫 번째 테이블 행에는 빈 시간이 있습니다. 하지만 그곳에 값을 입력했지만 3 행을 내린 경우에도 빈 시간으로 RENT READY가 0을 반환합니다. – jmease

+0

3 행을 의미하는 것이 RENT READY인지 알 수 없습니다. 다른 드롭 다운이 있음을 의미합니까? 'RENT READY'값은 무엇입니까? html 게시/http://www.jsfiddle.net –

0

선택 내에서 선택한 옵션을 가져와야합니다. 이 같은 : 찾을 수없는 경우 또는> 0가 발견되면 마지막에 .size()를 추가

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

당신에게 공을 줄 것이다.

+0

가장 가까운 전화 입력이 내가 선택한 입력이 아닙니다. 이것도 빈 값을 가진 것들만 필터링 할 수는 없습니다. – jmease

+0

페이지에서 몇 개의 선택 및 해당 입력을 기대합니까? 나는 당신이 입력에 대한 선택과 점검에'.each()'를 할 필요가있을 것이라고 생각한다. –

+0

원래는 각각을 수행하고 있었지만이 목적은 페이지의 유효성을 검사하고 개수가 0보다 큰 경우 false를 반환하는 것입니다. 반환 할 거짓 문이 각각의 내부에있을 때 페이지를 계속 게시하는 데 문제가있었습니다. 고리. – jmease

관련 문제