양식의 변경 사항을 캐치하는 JavaScript가 있는데 양식의 일반 제출 기능이 호출됩니다. 양식은 GET 양식 (검색 용)이며 많은 빈 특성이 params에 있습니다. 내가 뭘하려는 깨끗한 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을 사람들의 북마크 등에 연결하는 목적으로 만 사용됩니다. 그래서 내가 필요한 것은이 라인을 따라 뭔가가 있습니다. 그러나 이것은 실제 양식을 편집하지 않으므로 옳지 않습니다. 그러나 폼의 PARAMS 만든 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
나는 내가 이것에 가까운 것 같아,하지만 난 실제 폼의 속성을 편집하기보다는 다른 개체를 만들고 그 편집 방법의 단계를 누락. 이 해결 - - 편집
최대 - 어떤 조언에 감사
이것에 대해 게시 된 많은 사람들에게 감사합니다. 내가 가진 것은 완벽하게 작동하는 것 같습니다. 양식의submit
메소드를 호출하는 경우
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();
}
난 그냥 말할 수, 그것은 매우 같은 사용자의 당신의 생각을 냉각합니다. –
좋은 질문과 좋은 답변 : 나는 큰 검색 양식을 가지고 있으며 대부분 한 필드 만 채워집니다. 이제는 URL이 훨씬 짧아졌습니다. – guettli