2013-02-21 47 views
0

我有與值1,2,3,4選擇菜單的形式。當選擇3時,3個子div可見,但是1選擇只有1是可見的。如何顯示隱藏動態解析的div?

我創建了擁有每用戶輸入字段現在

<span id="ticketuser1">....</span><span id="ticketuser2">....etc 

$('#numOfTickets').change(function() { 
       var num= $("#numOfTickets").val(); 

       for (var i=0;i<num;i++){ 
        if(i>num){ 
         $('#ticketuser'+i).hide(); 
        } else { 
         $('#ticketuser'+i).show(); 
        } 
       } 

     }); 

2至3〜4竟把預期,但選擇一個較低的數字不會做的伎倆一些簡單的跨度股利。

任何提示?

+1

你能做出的jsfiddle有助於解釋這個問題? – Lowkase 2013-02-21 20:11:44

+1

@alex顯示完整的表單 – letiagoalves 2013-02-21 20:11:51

回答

2

的問題是,你的循環是永遠不會讓到隱藏的情形,因爲隱藏狀態也結束條件。

$('#numOfTickets').change(function() { 
     var num= $("#numOfTickets").val(); 

     for (var i=0;i<num;i++){ 
      if(i>num){ 
       $('#ticketuser'+i).hide(); 
      } else { 
       $('#ticketuser'+i).show(); 
      } 
     } 

}); 

你需要有兩個循環和變量可以是靜態或動態。

在我簡單的例子,我選擇,使其靜:

var maxUser = 5; 

$(function() { 
    $('#numOfTickets').change(function() { 
     var num = parseInt($(this).val())+1; 
     for (var i = 1; i < num; i++) { 
      $('#ticketUser' + i).show();    
     }  
     for (var j = num ; j <= maxUser; j++){ 
      $('#ticketUser' + j).hide();    
     }         
    }); 
}); 

因此,如果格低於maxUser但比num更大,它顯示。

在第二循環中,我們隱藏所做的一切num

num是你的價值+1讓你的循環會搶你打算顯示的最後一個項目。

Here is a working fiddle 如果您希望變量是動態的並且基於頁面加載時可用的選項,then here is another example。在第二個例子中,您可以輕鬆地添加初始化maxUser變量的加載代碼,如果這些選項是動態的,則將其放入更改函數中。