将多个选择字段值组合到单个变量中

时间:2014-06-16 17:19:29

标签: javascript php jquery html

我有一个带有多个选择下拉列表的HTML表单(我在网上找到的大多数jQuery片段都是关于多选的,这些是不同的,即复选框。)

如何使用jQuery从所有下拉字段中收集/加入值,并用符号(即逗号或加号)分隔它们?然后,发送到URL(WordPress标签搜索)。

我已尝试过此代码,但无效:

<script>
jQuery(document).ready(function() {
 jQuery("#submit").click(function() {
    var tags = $(".option").map(function() {
    return ($(this).text() == "") ? null : $(this).text(); // ignore default
        // return $(this).text(); // include all values
 }).join("+");
window.location = "<?php echo home_url( '/' ); ?>/tag/" + tags;
return false;
 });
});
</script>

这是最新版本,添加了.get,但仍然没有运气:

<script>
jQuery(document).ready(function() {
 jQuery("#submit").click(function() {
    var tags = $(".option").map(function() {
    return ($(this).text() == "") ? null : $(this).text(); // ignore default
    // return $(this).text(); // include all values
 }).get().join("+");
window.location = "<?php echo home_url( '/' ); ?>/tag/" + tags;
// return false; // tried this on and off
 });
});
</script>

3 个答案:

答案 0 :(得分:1)

你应该将get()与jquery map函数结合使用,否则你不只是接收数组而是jQuery对象

var tags = $(".option").map(function() {
return ($(this).text() == "") ? null : $(this).text(); // ignore default
}).get().join("+");
$("#result").html(tags);

http://jsfiddle.net/tx8HT/

点击后,你应该用新的标签计算替换旧的var tag = ..字符串。

<script>
jQuery(document).ready(function() {
 jQuery("#submit").click(function() {
var tags = $("#form .option").map(function() {
return ($(this).text() == "") ? null : $(this).text(); // ignore default
}).get().join("+");
window.location.href = "<?php echo home_url( '/' ); ?>/tag/" + tags;
return false;
 });
});
</script>

答案 1 :(得分:1)

一些事情:1)添加.get()以访问.join(),以及2)将返回限制为仅非选定的非空白选项:

jQuery(document).ready(function() {
  jQuery("#submit").click(function(evt) {
    evt.preventDefault();
    var tags = $(".option").map(function() {
      return (this.selected && $(this).text() != "") ? $(this).text() : null;
  }).get().join("+");
  window.location = "<?php echo home_url( '/' ); ?>/tag/" + tags;
  });
});

为了更好地衡量,请拉入事件对象并阻止默认操作。

JSFiddle:http://jsfiddle.net/jKGP8/

答案 2 :(得分:0)

看起来你的jQuery选择器是错误的,应该是“选项”而不是“.option”(你的代码正在寻找带有“选项”类的元素)。此外,这将连接所有选择选项文本值,而不仅仅是用户选择的文本值。目前尚不清楚这是否是你所追求的,但我想我会给你一个抬头。