2016-09-19 10 views
1

私は、選択リストに数字を表示するスクリプトを実行しています。ユーザが特定の値をチェックすると、彼はその請求を支払うことができる時間を示す数値を表示します。ここでオプションからX番号を削除する

は、表示されるべきものです:

  1. ユーザーが1つのボックスを選択した場合、それはオプション1倍と2倍を表示しなければならないので、彼は、2倍、最大で行うことができます。
  2. ユーザーが2ボックスを選択した場合、彼は最大3倍で操作できるため、オプション1x、2x、3xを表示する必要があります。
  3. ユーザーが3つのボックスを選択した場合、最大4倍で操作できるため、1x、2x、3x、4xのオプションを表示する必要があります。
  4. ユーザーが4つのボックスを選択すると、最大6倍で操作できるため、1x、2x、3x、4x、6x(5xは表示されません)のオプションを表示する必要があります。
  5. 5ボックス、最大8倍(7xは表示されません)。
  6. 6つのボックス、最大10倍(9xは表示されません)。
  7. 7個のボックス、最大12倍(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倍、9Xと11Xを示しておくと、 1xはまだ表示されていない、私はなぜint'ntが表示されているが表示されている1番目の場所intを理解する必要があります...

誰かが私を助けることができますか?

+1

我々がテストすることができますので、あなたも、あなたのHTMLを貼り付けてくださいもらえますか? – anpel

+0

@anpel、htmlコードで質問を編集しました! –

+0

$結果はここでは定義されていません。変数名はスペイン語ですので、達成しようとしていることを理解してください。私の理解は、彼らが1つの行を選択する場合、彼らは2つの行を選択する場合は、オプション2と3を選択する必要があります、彼らは3を選択する必要があります。正しいか、私はあなたの質問を誤解していますか? – 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

これは正しいですね!しかし、1倍も表示する必要があります。それは全く表示されません。どれくらいのボックスを選択しても、1xは常に表示されるはずです。他のものは、7つ以上のボックスを選択すると、オプションが生成されます新しい値を追加せずに12xを表示し続けるべきです。 –

+0

@ FelipeS.Bueno答えを更新しました。再度確認してください。それが問題を解決するのに役立つなら、upvote/acceptを忘れないでください。 – anpel

関連する問題