2012-05-21 42 views
0

我有一個表單,我希望在選擇選項時顯示輸入框。針對div內部的jQuery

問題:我允許用戶動態地添加更多的表單元素,所以ID的數量增加了,我不知道如何定位當前的表單輸入,而不是每一個。

作爲一個例子,一個用戶添加第二形式項之後我具有類似於這樣:

<div class="option-wrapper"> 
    <div id="condition-1" class="condition"> 
     <select id="option-1" class="option"> 
      <option value="0">Select...</option> 
      <option value="1">Option One</option> 
      <option value="2">Option Two</option> 
     </select> 
     <select id="operator-1" class="operator"> 
      <option value="0">Select...</option> 
      <option value="1">greater than</option> 
      <option value="2">less than</option> 
     </select> 
     <div id="input-1" class="form-input" style="display:none;"> 
      <input id="form-input-1" class="form-input"></input> 
     </div> 
    </div> 
</div> 

<div class="option-wrapper"> 
    <div id="condition-2" class="condition"> 
     <select id="option-1" class="option"> 
      <option value="0">Select...</option> 
      <option value="1">Option One</option> 
      <option value="2">Option Two</option> 
     </select> 
     <select id="operator-2" class="operator"> 
      <option value="0">Select...</option> 
      <option value="1">greater than</option> 
      <option value="2">less than</option> 
     </select> 
     <div id="input-2" class="form-input" style="display:none;"> 
      <input id="form-input-2" class="form-input"></input> 
     </div> 
    </div> 
</div> 

試圖目標#輸入-2,以顯示它,通過使用形式輸入。只需要顯示其當前選項的方式包裝,包裝內的用戶當前工作

目前正在努力:

$('.operator').change(function() { 
switch (this.value) { 
    case '0': 
     break; 
    case '1': 
     $(this).parents('.form-input').toggle(); 
     break; 
} 
}); 

我知道這種用法的父母是錯誤的,我已經嘗試了很多變化,並沒有能夠達到我想要的。任何幫助表示讚賞,謝謝!

回答

2

這是怎麼回事?

$('.operator').change(function() { 
    if (this.value === 1) 
      $('.form-input:last').toggle(); 
}); 

或者如果有你錯了,你可能會想這樣的:

$('.operator').change(function() { 
    if (this.value === 1) 
      $(this).parent().find('.form-input').toggle(); 
}); 
+0

因爲他們可以繼續添加更多的表單項目.option-wrapper。並且因爲他們可以在operator-1或operator-2中工作,所以定位最後一個項目將不會一致地工作。需要這個工作,以便如果他們改變operator-1它顯示輸入1,希望更清楚,謝謝! – mstef

+0

@mstef。我更新了。 – gdoron

+0

我覺得第二個是我在找的,謝謝! – mstef

1

如何:

$(this).siblings(".form-input").toggle(); 

它得到與.form-input類的同級元素。

+0

'.form-input'不是它的父親的兄弟姐妹。 – gdoron

+0

@gdoron真的嗎? :) – VisioN

+0

是的......'這個'是'