Jquery从输入数据属性创建字符串

标签 jquery

我正在创建一个搜索表单,该表单从表单输入中获取数据属性,创建一个数组,然后将其转换为字符串以发送到 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

如何在 monthJanuary 之间插入 =,然后使用 &

最佳答案

您确定不能使用输入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/

相关文章:

javascript - 以可编辑 JavaScript 形式使用复选框输入的提示

javascript - 如何将图像映射与图像 Sprite 一起使用?

javascript - 防止MVC中的ajax调用

javascript - 如何使用 jQuery 在单击相应按钮时淡入多个隐藏的 div?

javascript - Highcharts 使用 dateTime 来生成图表

javascript - 如何将好的结果与谷歌页面速度结合起来并将 css 放在页面底部?

jquery - 如何使用 jQuery 在 div 中拖动和滚动

javascript - 重置按钮并启动倒数计时器

javascript - jQuery Unresolved 冲突

javascript - 计算选中复选框的文本输入的值