【问题标题】:Multiple checkbox values search javascript多个复选框值搜索javascript
【发布时间】:2012-11-08 04:57:57
【问题描述】:

我有一个关键字列表,并为每个关键字创建了一个复选框。我的模板有一个包含内容的表单,所以我不能在复选框列表周围有一个嵌套表单。

如何将选中的复选框值发送到我的搜索结果页面?

包装内容的表单没有应用任何动作或方法:

<form id="BoostMasterForm" runat="server">

这是我的复选框列表的 HTML 标记示例(复选框会因关键字而异):

<div class="checkboxes">
  <ul>
    <li>
      <input type="checkbox" name="search" class="options" value="one">
      <label>one</label>
    </li>
    <li>
      <input type="checkbox" name="search" class="options" value="two">
      <label>two</label>
    </li>
    <li>
      <input type="checkbox" name="search" class="options" value="three">
      <label>three</label>
    </li>
  </ul>
  <input type="submit" value="Submit"/>
</div>

如何使用 javascript 或 jQuery 提交多个复选框选择的值,并在提交操作时将它们提交到以下 URL:'/imagery/image-search.aspx'

提交选项 1 和 3 的搜索结果 URL 应为:'/imagery/image-search.aspx?search=one%20three'

我正在使用我在另一篇文章中找到的这个 javascript,但是我需要它来附加表单、动作和方法。我的网站是 ASP,这篇文章是针对 PHP 网站的:

Sending multiple checkbox options

$('.options').click(function() {
    var selectedItems = new Array();
    $(".checkboxes input:checkbox[name=search]:checked").each(function() {selectedItems.push($(this).val());});
    var data = selectedItems.join('|');
    $("#opts").val(data);
});

如果有人可以提供帮助,将不胜感激。

干杯,合资

【问题讨论】:

  • 它混淆了你想要的东西。你想附加一些东西还是像你说的那样传递 URL
  • 我不确定它是否需要附加到表单的操作和方法。但它需要在提交时发送选中复选框的值。
  • 感谢@mleroy,感谢您的耐心和努力,我成功了。问题是我的页面模板中的现有表单不允许页面提交。我删除了表格,它起作用了。再次感谢

标签: javascript jquery checkbox submit


【解决方案1】:

这适用于您的示例。

$('input[type=submit]').on('click', function(evt) {
    var selectedValues = [];
    var url = '/imagery/image-search.aspx?search=';

    $('input[type=checkbox]:checked').each(function() {
        selectedValues.push($(this).val());
    });

    url += selectedValues.join(' ');

    window.location = url;
});​

【讨论】:

  • 我刚试过,但没有用。它是否需要引用表单ID?
  • 我可以让它在 jsfiddle 中运行,并且我的页面上确实有 jQuery 1.7.2,但我无法让它运行。 jsfiddle.net/qKHd8/1
  • 什么不完全有效?您可以打开浏览器的 javascript 控制台并查看是否出现任何错误吗?你是如何包含 jQuery 的?你把代码放在页面的什么地方?如果需要,发布整个代码。
  • 好的,我已经让它与我网站上显示的警报一起工作了。但是当我将其更改为 window.location = url;它不会进入 image-search.aspx 页面
  • 尝试将 url 设为绝对 url(所以 yourdomain.com/imagery/...)。提供更多详细信息,说明哪些功能无法正常工作以及您是否看到错误。
【解决方案2】:

我还是不清楚。但是这里有一段代码,你可以在其中构建一个字符串并传递它

    <script type="text/javascript">
function fnc()
{
    elements=document.getElementById("BoostMasterForm").elements;
    str="";
    for(i=0;i<elements.length;++i)
    {
        if(elements[i].type=='checkbox' && elements[i].checked)
        str=str+elements[i].value;
    }
    alert(str);
    //alert(window.location.href+'?str='+str);
//document.getElementById("aform").submit();
}
</script>

<form id="BoostMasterForm" onsubmit="fnc()">
<div class="checkboxes">
  <ul>
    <li>
      <input type="checkbox" id="search1" name="search" class="options" value="one">
      <label>one</label>
    </li>
    <li>
      <input type="checkbox" id="search2" name="search" class="options" value="two">
      <label>two</label>
    </li>
    <li>
      <input type="checkbox" id="search3" name="search" class="options" value="three">
      <label>three</label>
    </li>
  </ul>
  <input type="submit" value="Submit"/>
</div>
</form>

【讨论】:

  • 谢谢,但是列表是动态的,除了我提供的示例之外,还会有不同的复选框值。
  • 警报有效,但是当我选择多个选项时,它们会显示在警报中,例如:“onetwothree”,它们会在搜索中分开吗?
  • 他们不会,但我相信您可以弄清楚如何在 polin 代码的值之间添加空格! :)
猜你喜欢
  • 2013-05-28
  • 2018-03-26
  • 1970-01-01
  • 1970-01-01
  • 2018-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多