Я хочу изменить строку запроса изИспользование Javascript для преобразования формы с массивами в разделенных запятыми строк запроса без дубликатов
? FirstArray [] = 0001 & firstArray [] = 0002 & secondArray [] = 0003 & secondArray [] = 0004 в ? firstArray = 0001,0002 & secondArray = 0003,0004
Я думаю, что я почти там, но проблема у меня есть, что значения массива одинаковы для обоих массивов после мой javascript сделан processi в форме. Вот форма:
<form method="get" action="" class="productFilter">
<input type="checkbox" name="firstArray[]" id="" value="0001">0001
<input type="checkbox" name="firstArray[]" id="" value="0002">0002
<input type="checkbox" name="secondArray[]" id="" value="0003">0003
<input type="checkbox" name="secondArray[]" id="" value="0004">0004
<input type="submit" name="submit" value="test">
</form>
И вот Javacript/JQuery:
$('.productFilter').on('submit', function() {
var newVal = [];
var seen = {};
// Gather values into array.
$('input[name$="[]"]:checked').each(function() {
newVal.push($(this).val());
});
// Make comma-separated list of values.
var commaSeparated = newVal.join(',');
console.log(commaSeparated);
// Remove duplicates so an 'array' is only listed once in the query string.
$('input[name$="[]"]:checked').each(function() {
var name = $(this).attr('name');
if (seen[name]) {
$(this).remove();
}
else {
seen[name] = true;
}
$(this).attr('name', name.slice(0, -2)).val(commaSeparated);
});
});
Я понимаю, почему мой вар «» содержит запятую значения обоих входов firstArray и secondArray, поэтому, когда я проверяю все коробки, в результате строка запроса:
firstArray = 0001,0002,0003, 0004 & secondArray = 0001,0002,0003,0004 , когда я хочу, чтобы это было ? firstArray = 0001,0002 & secondArray = 0003,0004
Я не уверен, как это исправить, хотя. Мне нужно будет хранить значения массивов форм в отдельных переменных, не так ли? Следует отметить, что я не знаю, сколько элементов формы будет и что они будут вызывать в моем производственном коде.
Я думаю, что @Marc хочет построить запрос из формы, а не наоборот. Возможно, вам также понадобится окончательный вариант «)», чтобы закрыть on() – JonSG
Спасибо за подсказку о закрывающей скобке: Исправлено. Я думаю, что @Marc хочет, чтобы поля были доставлены надлежащим образом на сервер. Он получит точно строку запроса, которую он хочет, если он отправит эту форму с помощью метода GET после выполнения вышеуказанной функции onSubmit (поля также будут правильно отправлены с запросом POST). – rplantiko
Я, круто, я недостаточно читал ваш код, извините. – JonSG