2012-04-20 29 views
0

我有一個包含分區結構是這樣一種形式:在給定的部分隱藏的div基於空的子窗體輸入值

<form id="baseform"> 
    <div class="container"> 
    <div class="subheader"><h2>Section 1</h2></div> 
    <div class="row"> 
     <textarea id=T_01></textarea> 
     <input id="T_02" type="text" /> 
    </div> 
    <div class="row"> 
     [more form fields] 
    </div> 
    </div> 
    <div class="container"> 
    <div class="subheader"><h2>Section 2</h2></div>   
     <div class="row">[more form field, etc.] 
    </div> 
    </form> 

我想隱藏那些空的表單輸入.row的div的.subheader上下方document ready(我已經正在使用toggle()展現.subheaderclick.row的div)。

好像這樣的事情應該工作:

$(document).ready(function() { 
    $('.row :input[@value=""]').parent('.subheader').nextAll('.row').hide(); 
}); 

但沒有骰子。想法?

+0

這應該是'[值= ...]'而不是'[@value = ...]' – climbage 2012-04-20 23:05:56

回答

0

這將適用於大多數表單輸入,但是,您可能需要複選框和收音機,它有一個值設置其他條件邏輯。需要看看他們是否:checked

$('.subheader .row :input').each(function() { 
    if (!$(this).val().length) 
     $(this).parent('.row').hide(); 
}); 

編輯 - 在我選擇錯過了:input

編輯2 - 沒有隱藏實際的行,只有表單域。

+0

我敢肯定你的長度檢查關閉。你的意思是'if($(this).val()。length == 0)' – mattytommo 2012-04-20 22:53:54

+0

nah,if語句看起來不錯。 0等於錯誤,就是說'如果這是錯誤的'。 – kmfk 2012-04-20 22:57:57

+0

很酷,我永遠不會信任在JavaScript/JQuery中的if語句hehe :) – mattytommo 2012-04-20 22:59:19

0

試試這個:

$(function() { 
    $(".row :input[value='']").hide(); 
}); 
+0

謝謝,mattytommo,但這似乎並沒有隱藏包含表單元素的父行,只是表單元素本身。但它更接近!想知道什麼樣的解決方案適用於所有類型的表單輸入? – 2012-05-06 16:55:08

0
$('.row input').filter(function() { 
    return this.value.length ? this : null; 
}).parent().hide();​ 
+0

有趣。我不能讓它工作,但我也有很多複選框和單選按鈕(但也有一些只有文本字段的.row)。是否有解決方案適用於所有類型的表單輸入? – 2012-05-06 16:53:32

+0

三週後,他覺得很有趣?你可以過濾任何東西,但複選框不是真的是空的,它只是沒有被檢查,其他類型的輸入元素也一樣,每個都有自己的屬性來檢查,所以你必須檢查每個類型的屬性,有一個看看這個[FIDDLE](http://jsfiddle.net/adeneo/FYQyw/1/)更好的解釋。 – adeneo 2012-05-06 17:38:06

+0

這很好,但我試圖隱藏容器.row,而不是輸入本身,我也需要它來處理document.ready。我應該得到這個「有趣的」評論 - 我真的很忙,並不總是很好!謝謝你的幫助。 – 2012-05-08 04:09:03