javascript - 将复选框选择的值从一个 div 复制到另一个 div

标签 javascript jquery css html twitter-bootstrap

我有 2 个具有翻转功能的 div。一个 div 有多个复选框,另一个 div 是空的。当我在一个 div 中选中复选框时,这些复选框数据值/仅标签必须在返回时在另一个 div 中更新。我完成了翻转,但如何将复选框值/标签复制到另一个 div

我的代码:-

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="../../css/bootstrap.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="../../js/bootstrap.js"></script>
    <style>
        #two {
            height: 40px;
            width: 500px;
            position: absolute;
            top: 20px;
            left: 340px;
        }

       .vfront{
            background-color: lightgrey;
        }

        .vback {
            background-color:lightblue;
        }

        .vflipper {
            position: absolute;
            perspective: 600px;
            -webkit-perspective: 600px;
            -moz-perspective: 600px;
        }
        .vflipper .vfront, .vflipper .vback{
            -webkit-transform-style: preserve-3d;
            -moz-transform-style: preserve-3d;
            transform-style: preserve-3d;
            -webkit-backface-visibility: hidden;
            -moz-backface-visibility: hidden;
            backface-visibility: hidden;
            -o-transition: transform .6s ease-in-out;
            -moz-transition: transform .6s ease-in-out;
            -webkit-transition: transform .6s ease-in-out;
            transition: transform .6s ease-in-out;
        }
        /* vertical flipping stuff */

        .vflipper {
            -webkit-transform-origin: 100% center;
            -moz-transform-origin: 100% center;
            -ms-transform-origin: 100% center;
            transform-origin: 100% center;
        }
        .vflipper .vfront {
            position: absolute;
            top: 0px;
            left: 0px;
            z-index: 200;
            width: inherit;
            height: inherit;
        }
        .vflipper.vflip .vfront {
            z-index: 900;
            -webkit-transform: rotateX(180deg);
            -moz-transform: rotateX(180deg);
            transform: rotateX(180deg);
        }
        .vflipper .vback {
            position: absolute;
            top: 0px;
            left: 0px;
            z-index: 800;
            width: inherit;
            height: 150px;
            -webkit-transform: rotateX(-180deg);
            -moz-transform: rotateX(-180deg);
            transform: rotateX(-180deg);
        }
        .vflipper.vflip .vback {
            z-index: 1000;
            -webkit-transform: rotateX(0deg);
            -moz-transform: rotateX(0deg);
            transform: rotateX(0deg);
        }
    </style>
</head>

<body>
    <div id="two" class="vflipper">
        <div class="vclick vfront">
            <div class="pull-left">Model</div>
            <label id="lbl"></label>
        </div>
        <div class="vback" id=val>
            <label class="checkbox-inline"><input type="checkbox" value="name1">Option 1</label>
            <label class="checkbox-inline"><input type="checkbox" value="name2">Option 2</label>
            <label class="checkbox-inline"><input type="checkbox" value="name3">Option 3</label>
            <div class="pull-right"><input type="submit" class="vclick "></div>
        </div>
    </div>
</body>

<script>
    $(document).ready(function(){
        $('.vclick').click(function(){
            $(this).closest('.vflipper').toggleClass('vflip');
        });
    });       
</script>

这里,上面的代码,flip 工作得很好。当我单击第二个 div 中的复选框时,标签/值必须在第一个 div 中可见。在这里,我正在使用 IE Edge 浏览器。

最佳答案

您可以使用更改事件来监听复选框中的每个更改。

片段:

$(document).ready(function(){
  $('.vclick').click(function(){
    $(this).closest('.vflipper').toggleClass('vflip');
  });
  
  
  //
  // Listen for change event 
  //
  $('.vback :checkbox').on('change', function(e) {
    //
    // get the labels list of all  checked elements
    //
    var result = $('.vback :checkbox:checked').map(function(index, element) {
      if (element.checked) {
        return element.parentNode.textContent + ' / ' + element.value;
      }
    }).get();
    
    //
    // add this text to the label
    //
    $('#lbl').text(result.join(', '))
  })
});
#two {
  height: 40px;
  width: 500px;
  position: absolute;
  top: 20px;
  left: 340px;
}

.vfront{
  background-color: lightgrey;
}

.vback {
  background-color:lightblue;
}

.vflipper {
  position: absolute;
  perspective: 600px;
  -webkit-perspective: 600px;
  -moz-perspective: 600px;
}
.vflipper .vfront, .vflipper .vback{
  -webkit-transform-style: preserve-3d;
  -moz-transform-style: preserve-3d;
  transform-style: preserve-3d;
  -webkit-backface-visibility: hidden;
  -moz-backface-visibility: hidden;
  backface-visibility: hidden;
  -o-transition: transform .6s ease-in-out;
  -moz-transition: transform .6s ease-in-out;
  -webkit-transition: transform .6s ease-in-out;
  transition: transform .6s ease-in-out;
}
/* vertical flipping stuff */

.vflipper {
  -webkit-transform-origin: 100% center;
  -moz-transform-origin: 100% center;
  -ms-transform-origin: 100% center;
  transform-origin: 100% center;
}
.vflipper .vfront {
  position: absolute;
  top: 0px;
  left: 0px;
  z-index: 200;
  width: inherit;
  height: inherit;
}
.vflipper.vflip .vfront {
  z-index: 900;
  -webkit-transform: rotateX(180deg);
  -moz-transform: rotateX(180deg);
  transform: rotateX(180deg);
}
.vflipper .vback {
  position: absolute;
  top: 0px;
  left: 0px;
  z-index: 800;
  width: inherit;
  height: 150px;
  -webkit-transform: rotateX(-180deg);
  -moz-transform: rotateX(-180deg);
  transform: rotateX(-180deg);
}
.vflipper.vflip .vback {
  z-index: 1000;
  -webkit-transform: rotateX(0deg);
  -moz-transform: rotateX(0deg);
  transform: rotateX(0deg);
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<div id="two" class="vflipper">
    <div class="vclick vfront">
        <div class="pull-left">Model</div>
        <label id="lbl"></label>
    </div>
    <div class="vback" id=val>
        <label class="checkbox-inline"><input type="checkbox" value="name1">Option 1</label>
        <label class="checkbox-inline"><input type="checkbox" value="name2">Option 2</label>
        <label class="checkbox-inline"><input type="checkbox" value="name3">Option 3</label>
        <div class="pull-right"><input type="submit" class="vclick "></div>
    </div>
</div>

关于javascript - 将复选框选择的值从一个 div 复制到另一个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39795987/

相关文章:

jquery - 如何在子元素上保持父元素上的悬停状态?

css - 当你不能使用位置 :relative and position:absolute 时如何将 <p> float 到 <div> 的底部

javascript - 如何从 webcrypto AES-GCM 加密中获取标签

php - 自定义样式的选择框

css - 我如何使用 CSS Header Logo Swap 进行响应式 UI 的转换

javascript - jQuery 每秒调用 ajax 直到调用完成/返回 true

javascript - 检测何时以偏移量到达可滚动 div 的底部

javascript - 如何使数组过滤器与异步函数端一起工作?

javascript - 在 React.js 的 setInterval 中发出访问状态的问题

javascript - 使用 JQuery 提交表单