我正在创建一个搜索表单,该表单从表单输入中获取数据属性,创建一个数组,然后将其转换为字符串以发送到 API 搜索调用。
我的 HTML 是:
<input data-group="filters" data-param="month">
<input data-group="filters" data-param="year">
<input data-group="filters" data-param="name">
<button data-input="filters" id="search">Search</button>
我的JS是:
$('#search').on('click', function () {
var input_group = $(this).data('input');
var inputs = $('input[data-group="' + input_group + '"]');
var values = [];
$(inputs).each(function () {
values.push($(this).data("param"));
values.push($(this).val());
});
str = values.join([separator = '&']);
str = 'http://www.example.com/search/?' + str;
});
});
str
当前读取:
http://www.example.com/search/month&January&year&2015&name&Jane
但我想要的是:
http://www.example.com/search/?month=January&year=2015&name=Jane
如何在 month
和 January
之间插入 =
,然后使用 &
?
最佳答案
您确定不能使用输入name
属性吗?如果是这样,您可以简单地使用 jQuery 的 serialize
.
如果您需要继续使用现在所拥有的内容,那么您看到此行为的原因是因为您将名称和值添加到同一个数组中:
values.push($(this).data("param"));
values.push($(this).val());
...然后用 &
作为分隔符将它们连接起来。
您需要在要添加项目的位置添加 =
:
values.push(
$(this).data("param") + "=" + $(this).val()
);
关于Jquery从输入数据属性创建字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33796762/