HTML 多个 Select 值作为 GET 变量中的逗号分隔字符串
HTML Multiple Select value as comma separated string in GET variable
我设置了一个多select列表如下:
<select id="cuisine-select" name="_sft_post_tag" multiple="multiple" tabindex="-1" class="select2-hidden-accessible" aria-hidden="true">
<option value="banting">Banting</option>
<option value="pasta">Pasta</option>
<option value="pizza">Pizza</option>
<option value="seafood">Seafood</option>
<option value="vegan">Vegan</option>
<option value="vegetarian">Vegetarian</option>
</select>
这允许用户select 多种美食进行搜索。
提交表单时,URL 设置多个同名 GET 变量,每个变量具有 selected 值之一,如下所示:
/restaurant/?_sft_category=saturday&_sft_post_tag=pizza&_sft_post_tag=seafood
我要求在结果页面上预先 select 标记选项。
我目前卡住的地方是 URL 的结构。我要求 URL 如下所示:
/restaurant/?_sft_category=saturday&_sft_post_tag=pizza,seafood
换句话说,我需要 one GET 变量,即 _sft_post_tag 并且所有 selected 选项必须出现在逗号分隔的字符串中。
搜索表单是名为 Search & Filter Pro 的 Wordpress 插件的一部分,它使用逗号分隔的字符串来预 select 选项。主页的搜索表单使用了Select2插件。
我试过使用 name="_sft_post_tag[]"
然后将数组内爆成逗号分隔的字符串,就像 implode(",", $_GET['_sft_post_tag'])
.
这也没有用。目前它只会预填充 _sft_post_tag
的最后一个值
这应该有所帮助!
$('form').on('submit', function(e) {
e.preventDefault()
var val = $('#cuisine-select').val().join(',')
var name = $('#cuisine-select').attr('name')
$.get('/restaurant', {
_sft_category: 'saturday',
[name]: val
})
.done(function(data) {
console.log(data)
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<select id="cuisine-select" name="_sft_post_tag" multiple="multiple" tabindex="-1" class="select2-hidden-accessible" aria-hidden="true">
<option value="banting">Banting</option>
<option value="pasta">Pasta</option>
<option value="pizza">Pizza</option>
<option value="seafood">Seafood</option>
<option value="vegan">Vegan</option>
<option value="vegetarian">Vegetarian</option>
</select>
<button type="submit">Submit</button>
</form>
最后我的回答很简单:
$('#form-specials').on('submit', function(e) {
e.preventDefault();
var cuisines = $('#cuisine-select').val().join(',');
var day = $('#day-select').val();
window.location = 'restaurant?_sft_category=' + day + "&_sft_post_tag=" + cuisines;
});
我设置了一个多select列表如下:
<select id="cuisine-select" name="_sft_post_tag" multiple="multiple" tabindex="-1" class="select2-hidden-accessible" aria-hidden="true">
<option value="banting">Banting</option>
<option value="pasta">Pasta</option>
<option value="pizza">Pizza</option>
<option value="seafood">Seafood</option>
<option value="vegan">Vegan</option>
<option value="vegetarian">Vegetarian</option>
</select>
这允许用户select 多种美食进行搜索。
提交表单时,URL 设置多个同名 GET 变量,每个变量具有 selected 值之一,如下所示:
/restaurant/?_sft_category=saturday&_sft_post_tag=pizza&_sft_post_tag=seafood
我要求在结果页面上预先 select 标记选项。
我目前卡住的地方是 URL 的结构。我要求 URL 如下所示:
/restaurant/?_sft_category=saturday&_sft_post_tag=pizza,seafood
换句话说,我需要 one GET 变量,即 _sft_post_tag 并且所有 selected 选项必须出现在逗号分隔的字符串中。
搜索表单是名为 Search & Filter Pro 的 Wordpress 插件的一部分,它使用逗号分隔的字符串来预 select 选项。主页的搜索表单使用了Select2插件。
我试过使用 name="_sft_post_tag[]"
然后将数组内爆成逗号分隔的字符串,就像 implode(",", $_GET['_sft_post_tag'])
.
这也没有用。目前它只会预填充 _sft_post_tag
这应该有所帮助!
$('form').on('submit', function(e) {
e.preventDefault()
var val = $('#cuisine-select').val().join(',')
var name = $('#cuisine-select').attr('name')
$.get('/restaurant', {
_sft_category: 'saturday',
[name]: val
})
.done(function(data) {
console.log(data)
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<select id="cuisine-select" name="_sft_post_tag" multiple="multiple" tabindex="-1" class="select2-hidden-accessible" aria-hidden="true">
<option value="banting">Banting</option>
<option value="pasta">Pasta</option>
<option value="pizza">Pizza</option>
<option value="seafood">Seafood</option>
<option value="vegan">Vegan</option>
<option value="vegetarian">Vegetarian</option>
</select>
<button type="submit">Submit</button>
</form>
最后我的回答很简单:
$('#form-specials').on('submit', function(e) {
e.preventDefault();
var cuisines = $('#cuisine-select').val().join(',');
var day = $('#day-select').val();
window.location = 'restaurant?_sft_category=' + day + "&_sft_post_tag=" + cuisines;
});