html 根据所选单选按钮将属性值推送到两个不同的数组

pb3skfrl  于 2022-12-09  发布在  其他
关注(0)|答案(1)|浏览(92)

简而言之,如果用户对单选按钮选择yes,我将尝试从input获取data-name属性,并将其推送到名为accepted_array的数组中。
如果用户选择no,则将data-name存储到declined_array
下面是一个可视化的标记:

<div class="guest__options-group">
  <input id="attending-yes-0" type="radio" name="attendance-0" value="yes" data-name="John" required />
  <label for="attending-yes-0">Yes</label>
</div>

<div class="guest__options-group">
  <input id="attending-no-0" type="radio" name="attendance-0" value="no" data-name="John" required />
  <label for="attending-no-0">No</label>
</div>

<!-- options for Alex -->

<div class="guest__options-group">
  <input id="attending-yes-1" type="radio" name="attendance-1" value="yes" data-name="Alex" required />
  <label for="attending-yes-1">Yes</label>
</div>

<div class="guest__options-group">
  <input id="attending-no-1" type="radio" name="attendance-1" value="no" data-name="Alex" required />
  <label for="attending-no-1">No</label>
</div>

以下是我尝试过的两种方法:
第一个方法。

(function ($) {

  $( ".guest__attendance-input" ).each(function(index) {
    $(this).on("click", function(){

      var $this = $(this);
      var checkedVal = $this.val();
      var accepted_array = [];
      var declined_array = [];

      if( checkedVal == "yes" ) {
        var name = $this.data("name");
        accepted_array.push(name);
      } else {
        declined_array.push(name);
      }

      console.log("accepted " + accepted_array.join(","));
      console.log("declined " + accepted_array.join(","));

    });

  });

}) (jQuery);

这只对选定的用户执行,并将名称添加到两个数组中。
第二种方法。

(function ($) {

  $( ".guest__attendance-input" ).each(function(index) {
    $(this).on("click", function(){

      var $this = $(this);
      var data = [];
      var checked = $this.is(':checked');
      var name = $this.attr('data-name');
      
      if (checked) {
        if (!data[name]) {
          data[name] = []
        }
        data[name].push($this.val())
      }
      console.log(data);
    });

  });

}) (jQuery);

它只将用户添加到单个阵列。
如果两个人都选择yes,我需要在accepted_array中使用这两个名称。如果有人一开始选择yes,然后选择no,我需要从accepted_array中删除它们,反之亦然。

ecbunoof

ecbunoof1#

如果某人最初选择yes,然后选择no,反之亦然,则可以将spliceinArray一起使用,从数组中删除值。
示例:
第一个

相关问题