У меня есть javascript, который ловит изменения в форме, а затем вызывает форму регулярной функции отправки. Форма представляет собой форму GET (для поиска), и у меня есть множество пустых атрибутов, которые появляются в параметрах. То, что я хотел бы сделать, это удалить все пустые атрибуты перед отправкой, чтобы получить более чистый URL-адрес: например, если кто-то меняет тему "субъект" на "английский", я хочу, чтобы их поисковый URL был
http://localhost:3000/quizzes?subject=English
а не
http://localhost:3000/quizzes?term=&subject=English&topic=&age_group_id=&difficulty_id=&made_by=&order=&style=
как это сейчас. Это просто чисто для того, чтобы иметь более чистый и более значимый URL-адрес для ссылок на закладки и для людей и т.д. Итак, мне нужно что-то в этом роде, но это неправильно, поскольку я не редактирую действительную форму но объект 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
Я думаю, что я близок с этим, но мне не хватает того, как редактировать фактические атрибуты формы, а не создавать другой объект и редактировать это.
благодарен за любой совет - max
EDIT - SOLVED - благодаря многим людям, которые опубликовали об этом. Вот что у меня есть, что, кажется, отлично работает.
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();
}