Поскольку вы используете метод GET для действия формы, вы можете обработать событие submit для предотвращения обычной отправки и убрать пустые значения с помощью функции replace()
с регулярным выражением, а затем использовать location.href
для перенаправления на целевой URL:
$('form').submit(function (e) {
e.preventDefault();
var queryString = $(this).serialize().replace(/&?[\w\-\d_]+=&|&?[\w\-\d_]+=$/gi, "");
url = this.getAttribute('action') + (queryString.length > 0 ? "?" + queryString : "");
// returns URL /search?q=something when both select elements are empty
location.href = url;
});
Или отключите элементы select
без значений на лету, используя attr()
или prop()
, чтобы предотвратить их использование в строке запроса, используя обычное событие отправки формы:
$('form').submit(function () {
$('select').each(function () {
if ($(this).val() == '') {
$(this).prop('disabled', 'disabled'); // or prop('disabled', true)
});
});