2

Twitterブートストラップのモーダルを使用しています。ユーザーがボタンをクリックすると、特定の値を持つチェックボックスが表示され、モーダルがhtmlに追加された値を非表示にするモーダルを作成したい( a.btn の隣) ) ..

ここにhtmlがあります

<body>

<!-- Get the button problem  -->

<!-- Button to trigger modal -->

デモモーダルを起動

<!-- Modal -->
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
    <h3 id="myModalLabel">Modal header</h3>
  </div>
  <div class="modal-body">
    <label for="value">
        <input type="checkbox" name="value1" value="1">value1
    </label>
     <label for="value">
        <input type="checkbox" name="value2" value="2">value2
    </label>
     <label for="value">
        <input type="checkbox" name="value3" value="3">value3
    </label>
  </div>
  <div class="modal-footer">
    <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
    <button class="btn btn-primary">Save changes</button>
  </div>
</div>

ここに私のスクリプトがあります:

<script type="text/javascript">
  jQuery(document).ready(function($) {
    $('#myModal .btn').last().on('click', function(){
        var checkbox_val = $('input:checkbox:checked').val();
        var MyModal = $('#myModal');
        function get_value() {
            var allVals = [];
            $('input:checkbox:checked').each(function() {
                allVals.push(checkbox_val);
            });

            $('a.btn').after("<p>" + allVals + "</p>");
        }
        MyModal.modal('hide').on('hidden', function(){
           get_value();

        })

    });
  });
</script>

編集 すべてのチェックボックスを選択したときの allVals の値は次のとおりです ["1", "1", "1"]

値を ["1", "2", "3"] にしたい

4

2 に答える 2

3

問題はallVals.push(checkbox_val);、ループ内で行う場合.each、常に同じ値をプッシュしていることだと思います。それが[1,1,1]を取得した理由です。jQuery を更新します。

jQuery(document).ready(function($) {
    $('#myModal .btn').last().on('click', function(){
        var MyModal = $('#myModal');
        function get_value() {
            var allVals = [];
            $('input:checkbox:checked').each(function() {
                allVals.push($(this).val()); //Use the $('this') selector
            });

            $('a.btn').after("<p>" + allVals + "</p>");
        }
        MyModal.modal('hide').on('hidden', function(){
           get_value();

        })

    });
  });
于 2013-02-07T08:36:26.293 に答える
0

コンソールでは、配列は「1」、「1」を返します

$('input:checkbox:checked').each(function() {
    allVals.push(checkbox_val);// it will return first checkbox value '1' alway
});

このために、この行allVals.push(checkbox_val);を次のように置き換えますallVals.push($(this).val());

于 2013-02-07T08:03:11.397 に答える