2016-09-19 41 views
1

我有一個腳本運行時在選擇列表選項中顯示一個數字,當用戶檢查一個特定的值時,它將顯示一個數字,指的是他可以支付他的賬單的次數。從選項中防止X號碼

下面是它應該顯示:

  1. 如果用戶選擇1盒,他可以在2倍最大做的,所以它必須顯示選項倍和2倍;
  2. 如果用戶選擇2個盒子,他可以做3x max,所以它必須顯示選項1x,2x和3x;
  3. 如果用戶選擇3個盒子,他可以做4x max,所以它必須顯示選項1x,2x,3x和4x;
  4. 如果用戶選擇4個盒子,他可以以6x最大,因此它必須顯示選項1x,2x,3x,4x和6x(5x不應出現);
  5. 5盒,最大8x(不應出現7x);
  6. 6盒,最大10x(9x不應出現);
  7. 7盒,最大12x(不應出現11x);

這裏是該腳本代碼:

var tabelaParcelas = []; 
tabelaParcelas[1] = 2; 
tabelaParcelas[2] = 3; 
tabelaParcelas[3] = 4; 
tabelaParcelas[4] = 6; 
tabelaParcelas[5] = 8; 
tabelaParcelas[6] = 10; 
tabelaParcelas[7] = 12; 

$(document).ready(function(){ 
    update(); 
}); 

$('input[type=checkbox]').click(function(){ 
    update(); 
}) 

    function update(){ 
     var amount2 = 0; 
     var options = 0; 
     $('#instNum2 option').remove(); 
     $('.check_list').each(function() { 
      if (this.checked) { 
       amount2 += Number($(this).val()); 
       options ++; 
      } 
      $("input[name=amount]").val("R$"+amount2.toFixed(2)); 
    }); 

    if (options > 7) options = 7; 
    var i = 0; 
    if (options > 0) { 
     while (tabelaParcelas[options] != i) { 
      if (i != 0) { 
      $('#instNum2') 
      .append($("<option></option>") 
      .attr("value",i+1) 
      .text((i+1)+"x")); 
      } 
      i++; 
     } 
    } 
} 

HTML

​​

的問題是,該腳本將繼續顯示5倍,7倍,9倍和11倍,和1x甚至沒有顯示出來,我需要了解int第1位爲什麼不應該出現的那個顯示出來...

有人可以幫我嗎?

+1

能否請您粘貼HTML太多,所以我們可以測試? – anpel

+0

@anpel,用html代碼編輯了這個問題! –

+0

$結果沒有在這裏定義,變量名稱是西班牙語,所以請幫助我瞭解你正在努力實現的目標。我的理解是,如果他們選擇一行,他們只需要看到選項2,如果他們選擇兩行,他們需要看到選項2和3,選擇3,他們看到選項2,3和4。正確還是我誤解你的問題? – anpel

回答

0

請試試這個代碼:

var tabelaParcelas = [1, 2, 3, 4, 6, 8, 10, 12]; 

$(document).ready(function() { 
    update(); 
}); 

$('input[type=checkbox]').click(function() { 
    update(); 
}) 

function update() { 
    var list = $('#instNum2'); // use selector only once whenever possible for better performance 

    // clear any existing options from the dropdown list 
    list.html("") 

    // count checked boxes, start from 1 to always include 1 option 
    var checked_boxes = 1 
    $(".check_list").each(function() { 
    if (this.checked) { 
     checked_boxes++; 
    } 
    }); 

    // append options to the select list 
    for (var i = 0; i < checked_boxes; i++) { 
    // break the loop to stop creating empty options 
    if(i == tabelaParcelas.length){ 
     break; 
    } 
    var option = $("<option>", { 
     value: tabelaParcelas[i], 
     "text": tabelaParcelas[i] 
    }); 
    list.append(option); 
    } 


} 
+0

這是正確的兄弟!但事情是,我需要顯示1x,這是什麼都沒有顯示出來,1x應該總是可見的,無論你選擇多少盒子,以及其他的東西,當我選擇7個以上的盒子時,選項會繼續產生空選項,而它應該只顯示12x而不添加任何新值 –

+0

@ FelipeS.Bueno我更新了答案,請再次檢查。如果它幫助你解決問題,請不要忘記加註/接受。 – anpel