【问题标题】:How to get the selected checkbox values on a button click?如何在单击按钮时获取选定的复选框值?
【发布时间】:2013-12-02 05:43:59
【问题描述】:

如何在单击按钮时获取列表视图中选中的复选框值?

我正在使用 jQuery append 动态构建列表项。

这是创建列表项的 jQuery 代码... obj_address_list 是一个对象数组,每个对象都有名称、别名、id 和移动设备。复选框的值类似于“名称”

$.each(obj_address_list, function(ctr, obj) {
  $('#ul_address_list').append('<li data-icon="false">' +
    '<a href="#" class="add-container">' +
      '<label class="add-container" data-corners="false">' +
        '<input name="chk_address" id="chk_address" type="checkbox" value="'+obj.name+'<'+obj.alias+'-'+obj.id+'>'+'" />' +
        '<label class="lbl_add-container">' +
          '<h3>'+obj.name+'</h3>' +
          '<p>'+obj.mobile+'</p></div>' +
        '</label>' +
      '</label>' +
    '</a>' +
  '</li>');
});
$("input[name=chk_address]").checkboxradio();
$('#ul_address_list').listview('refresh');

追加后在屏幕下方查找。

当点击“发送”按钮时,我需要捕获所有选中的复选框值并将其传递到另一个页面。

以下是我在点击发送按钮时尝试使用的代码。按钮的 id 是“a_send-sms”,复选框的 id 是“chk_address”。但这似乎不起作用。

$("#a_send-sms").on("tap",function(e){
  e.preventDefault();
  var selected = new Array();
  $('#chk_address input:checked').each(function() {
    alert('inside');
    selected.push($(this).attr('value'));
  });
  console.log(selected);
});

我错过了什么?

【问题讨论】:

  • 请出示您的 HTML。
  • 你想得到哪个值?号码999445551?无论如何使用.val(); 而不是.attr("value");。
  • 您的选择器错误,请尝试$('ul input:checked') 或$("ul .ui-checkbox")。 编辑你有两个value属性。
  • @omar - 我删除了重复值属性。谢谢你指点我。这个$('ul input:checked') 按预期工作,它只循环选定的值。当我尝试这个$("ul .ui-checkbox") 时,它会循环所有复选框项目。 **你是我的明星**
  • 不客气,很高兴能帮到您。

标签: jquery jquery-mobile checkbox


【解决方案1】:

正如@Sergio 所说,您不应该对多个元素使用相同的id。此外,您的选择器 $('#chk_address input:checked') 是错误的。 jQuery 会将chk_address 视为父元素并查找选中的子元素input。

$("#a_send-sms").on("tap",function(e){
  e.preventDefault();
  var selected = new Array();
  $('ul input:checked').each(function() { // or listview id
    alert('inside');
    selected.push($(this).val()); // instead of .attr("value")
  });
  console.log(selected);
});

【讨论】:

    【解决方案2】:

    您不能有多个 ID,ID 必须是唯一的。给这些复选框一个类,然后迭代它们:

    $('input.chk_address:checked')
            ^
    

    那就试试吧:

    $("#a_send-sms").on("tap",function(e){
      e.preventDefault();
      var selected = new Array();
      $('input.chk_address:checked').each(function() {
        alert('inside');
        selected.push(this.value);
      });
      console.log(selected);
    });
    

    【讨论】:

      猜你喜欢
      • 2019-08-22
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      相关资源
      最近更新 更多