【问题标题】:How to define $(this) to add checkbox values to textarea如何定义 $(this) 以将复选框值添加到 textarea
【发布时间】:2016-03-20 17:45:43
【问题描述】:

简介

我想在包含多个问题的表单上使用以下脚本,这些问题通过多个复选框输入来回答。 我想在选中“alloptions”类中的相应文本区域时添加复选框值。

JSFIDDLE http://jsfiddle.net/qFfMP/31/ 如果表单上只有一组复选框,这就是它的工作方式。如果您有两组具有相同类的复选框,则选择会添加到两个文本区域。我想在 alloptions 类中保持选中复选框,以便仅将其发布到该类中的嵌套文本区域。

问题

当此类在其中定义输入时,如何将“alloptions”的选择事件定义为 $(this)? 我最好将“cb”定义为 $(this) 并重新编写代码;如果我不需要,我宁愿不要。

代码

<div class="alloptions">
<textarea class="fulloptions" type="text" value=""></textarea><br>
<input type="checkbox" class="cb" value="Test1" />Test1<br>
<input type="checkbox" class="cb" value="Test2" />Test2<br>
<input type="checkbox" class="cb" value="Test3" />Test3
</div>
<hr>
<div class="alloptions">
<textarea class="fulloptions" type="text" value=""></textarea><br>
<input type="checkbox" class="cb" value="Test1" />Test1<br>
<input type="checkbox" class="cb" value="Test2" />Test2<br>
<input type="checkbox" class="cb" value="Test3" />Test3
</div>



<script>
$(document).ready(function () {

var checkboxes = $(".alloptions  input[type='checkbox']");
checkboxes.on('change', function() {
    $('.alloptions').find('.fulloptions').val(
        checkboxes.filter(':checked').map(function(item) {
            return this.value;
        }).get().join(', ')
     );
});

});
</script>

【问题讨论】:

  • 如果没有适当的解释,很难帮助您,用文字来说明您正在尝试做什么
  • @chalietfl 你昨天帮我解决了一个类似的问题。不同的脚本,不同的问题。使用此脚本,我尝试使用“alloptions”作为触发器而不是输入。我想我应该重新编写这个脚本以使用输入作为 $(this) 的触发器。
  • 这仍然无法解释您要做什么
  • @charlietfl - 选中时将复选框值添加到对应的文本区域
  • @charlietlf - 我更新了问题以更好地定义我想要做什么。

标签: jquery checkbox textarea this


【解决方案1】:

如果我理解正确,您正在寻找类似的东西:

$(function () {
  $(".alloptions  input[type='checkbox']").on('change', function() {
    $(this).siblings('textarea.fulloptions').val($(this).siblings('input[type="checkbox"]').add(this).filter(':checked').map(function(item) {
      return this.value;
    }).get().join(', ')
                                                );
  });
});
<script src="http://code.jquery.com/jquery-1.12.1.min.js"></script>


<div class="alloptions">
    <textarea class="fulloptions" type="text" value=""></textarea><br>
    <input type="checkbox" class="cb" name="option1" value="Test1" />Test1<br>
    <input type="checkbox" class="cb" name="option1" value="Test2" />Test2<br>
    <input type="checkbox" class="cb" name="option1" value="Test3" />Test3
</div>
<br>
<div class="alloptions">
    <textarea class="fulloptions" type="text" value=""></textarea><br>
    <input type="checkbox" class="cb" value="Test1" />Test1<br>
    <input type="checkbox" class="cb" value="Test2" />Test2<br>
    <input type="checkbox" class="cb" value="Test3" />Test3
</div>

如果您将每个复选框包装在标签中,我想象的唯一方法是(这不是使用标签的正确方法):

$(function () {
  $(".alloptions  input[type='checkbox']").on('change', function () {
    var parentDiv = $(this).closest('div.alloptions');
    parentDiv.find('textarea.fulloptions').val(parentDiv.find('input[type="checkbox"]').filter(':checked').map(function (item) {
      return this.value;
    }).get().join(', ')
                                              );
  });
});
<script src="http://code.jquery.com/jquery-1.12.1.min.js"></script>

<div class="alloptions">
    <textarea class="fulloptions" type="text" value=""></textarea><br>
    <label>Test1
        <input type="checkbox" class="cb" name="option1" value="Test1"/>Test1<br>
    </label>
    <label>Test2
        <input type="checkbox" class="cb" name="option1" value="Test2"/>Test2<br>
    </label>
    <label>Test3
        <input type="checkbox" class="cb" name="option1" value="Test3"/>Test3
    </label>
</div>
<br>

<div class="alloptions">
    <textarea class="fulloptions" type="text" value=""></textarea><br>
    <label>Test1
        <input type="checkbox" class="cb" name="option1" value="Test1"/>Test1<br>
    </label>
    <label>Test2
        <input type="checkbox" class="cb" name="option1" value="Test2"/>Test2<br>
    </label>
    <label>Test3
        <input type="checkbox" class="cb" name="option1" value="Test3"/>Test3
    </label>
</div>

【讨论】:

  • 如果用户在 textarea 中键入其他内容怎么办?这个 UI 概念本身并没有什么意义
  • @gaemaf - 没错!不知道如何触发事件。非常感谢您抽出宝贵的时间,因为如果没有您的帮助,我相信我会花更多的时间在这上面。
  • @charlietfl - 也感谢您的宝贵时间。为了回答您的问题,textarea 将被隐藏。
  • @gaemaf - 我不想再次打扰您的时间,但我一直在阅读有关使用兄弟姐妹的信息。如果我将每个复选框包装在标签中,我将如何导航?我尝试了许多方法,但没有任何运气。
  • @gaemaf - 你太棒了!我不确定我是否会根据我前进的方向来完成这项工作。虽然我怀疑兄弟姐妹在使用标签时不是答案。顺便说一句,我不知道使用标签来选择复选框被认为是一种误用的方法。还有很多东西要学。再次感谢。
猜你喜欢
  • 2021-09-28
  • 1970-01-01
  • 2017-10-15
  • 2019-07-04
  • 1970-01-01
  • 1970-01-01
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多