У меня есть некоторый javascript, который ловит изменения в форме, а затем вызывает функцию регулярной отправки формы. Форма является GET-формой (для поиска), и у меня есть много пустых атрибутов в параметрах. Что я хотел бы сделать, это удалить все пустые атрибуты перед отправкой, чтобы получить более чистый URL-адрес: например, если кто-то меняет «subject», выберите «english», я хочу, чтобы его URL поиска был
http://localhost:3000/quizzes?subject=English
вместо
http://localhost:3000/quizzes?term=&subject=English&topic=&age_group_id=&difficulty_id=&made_by=&order=&style=
как сейчас. Это просто для того, чтобы иметь более чистую и более значимую ссылку для ссылки на закладки для людей и т. Д. Итак, мне нужно что-то в этом роде, но это не правильно, так как я не редактирую реальную форму но объект js сделан из параметров формы:
quizSearchForm = jQuery("#searchForm");
formParams = quizSearchForm.serializeArray();
//remove any empty fields from the form params before submitting, for a cleaner url
//this won't work as we're not changing the form, just an object made from it.
for (i in formParams) {
if (formParams[i] === null || formParams[i] === "") {
delete formParams[i];
}
}
//submit the form
Я думаю, что я близок к этому, но мне не хватает шага, как редактировать атрибуты фактической формы, а не создавать другой объект и редактировать это.
благодарен за любые советы - макс.
РЕДАКТИРОВАТЬ - РЕШЕНО - спасибо многим, кто написал об этом. Вот что у меня есть, и кажется, что оно отлично работает.
function submitSearchForm(){
quizSearchForm = jQuery("#searchForm");
//disable empty fields so they don't clutter up the url
quizSearchForm.find(':input[value=""]').attr('disabled', true);
quizSearchForm.submit();
}