2013-11-14 27 views
1

我需要創建一個帶有許多選擇標籤的表單,並且在每個選擇標籤中,另一個選擇將打開,並在此選擇另一個,另一個,另一個選擇標籤,直到表單結束。如何僅使用一個函數鏈接我的表單?

我現在有這個http://jsfiddle.net/8SZ5n/1/,但它不是通用的,我需要在每個選擇中調用此函數。

<script type="text/javascript"> 
$(function() { 
    $('.select').change(function(){ 
     if ($(this).val() == "1") { 
      $('.divR1').show(); 
      $('.divR2').hide(); 

     }else if($(this).val() == "2"){ 
      $('.divR2').show(); 
      $('.divR1').hide(); 
     } 

     else { 
      $('.divR1').hide(); 
      $('.divR2').hide(); 
     } 
    }); 
}); 
</script> 

<div id="div1"> 
    <select class="select" autocomplete="off"> 
     <option value="#" checked>Escolha</option> 
     <option value="1">Sim</option> 
     <option value="2">Não</option> 
    </select> 

    <div class="divR1" style="display:none"> 
     1 
     <select autocomplete="off"> 
      <option value="#" checked>Escolha</option> 
      <option value="1">Sim</option> 
      <option value="2">Não</option> 
     </select> 
    </div> 

    <div class="divR2" style="display:none"> 
     2 
     <select autocomplete="off"> 
      <option value="#" checked>Escolha</option> 
      <option value="1"></option> 
      <option value="2"></option> 
     </select> 
    </div> 
</div> 

回答

1

http://jsfiddle.net/8SZ5n/5/

$(function() { 
    $(".select").change(function() { 
     var next = $('option', this).filter(':selected').attr('next'); 
     $($(this).attr('hide')).hide(); 
     if (next != undefined) { 
      $(next).show(); 
     } 
    }); 
}); 
+0

同樣的問題。如果我嘗試添加名爲id =「div2」的新div,則第二個選擇可以更改第一個。像這樣一個jsfiddle.net/8SZ5n/8 –

+0

仔細看html部分http://jsfiddle.net/8SZ5n/5/每個div都有自己的類,每個選擇都有屬性「隱藏」(應該隱藏的元素的選擇器如果沒有選擇)並且每個選項都具有屬性「下一個」(當選擇該選項時應該顯示的元素的選擇器)。 –

1
$(function() { 
    $(".select").change(function() { 
     var id = $(this).val(); 
     $(".selectDiv").hide(); 
     $(".divR" + id).show(); 
    }); 
}); 

我補充說: 「selectDiv」 級到所有相關的申報單;此外,「DivR中」應該是一個ID螞蟻不是一類,如果它是唯一的;)

編輯jsFiddle

+0

考慮使用jquery next()函數,這種方式你可以不用「id」引用。 $(this).parent('div')。next('div')。find('select') – lvil

+0

你可以發佈一個JSFiddle鏈接嗎? –

+1

我使用JSFiddle鏈接編輯了我的答案;) –

1

好了,你沒有明確定義的形式結束的話,這裏有一個例子保持下去,直到你希望它:)

JSFiddle

$(function() { 
    $('select').change(handler); 
}); 

function handler() { 
    var x = $(this); 
    if (x.val() != '#') { 
     var div = $('<div>').append(x.val()); 
     x.parent().append(div); 
     var select = $('<select>') 
      .attr('autocomplete', 'off') 
      .change(handler) 
      .append($('<option>').attr('value', '#').append('Escolha')) 
      .append($('<option>').attr('value', '1').append('Sim')) 
      .append($('<option>').attr('value', '2').append('Não')); 
     div.append(select); 
    } else { 
     x.siblings().remove(); 
    } 
} 
+0

工作正常,但每個選擇標記不能創建多個新選擇。每個選擇必須只顯示選定的選項。 示例: 首選:是或否? Ans:Not(New div + new select with Yes or not) –

+0

在這種情況下,如果將選項從'Sim'更改爲'Não',則兩個選項都將繼續顯示模式,我只需要在路徑中選擇的選項被顯示。如果選擇的選項隨時改變,則帶有另一個選擇或表單的新div必須覆蓋實際的div。 –

相關問題