我有一个带有多个选择下拉列表的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>
答案 0 :(得分:1)
你应该将get()与jquery map函数结合使用,否则你不只是接收数组而是jQuery对象
var tags = $(".option").map(function() {
return ($(this).text() == "") ? null : $(this).text(); // ignore default
}).get().join("+");
$("#result").html(tags);
点击后,你应该用新的标签计算替换旧的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”(你的代码正在寻找带有“选项”类的元素)。此外,这将连接所有选择选项文本值,而不仅仅是用户选择的文本值。目前尚不清楚这是否是你所追求的,但我想我会给你一个抬头。