문제

나는 검색 폼의 숫자와 텍스트 입력 앤 드롭 다운스 제출을 통해 얻는다.고 싶드 검색 url 을 제거하여 빈에서 필드를 쿼리 문자열을 때 검색을 수행하는 것입니다.

var form = $("form");  
var serializedFormStr = form.serialize();  
// I'd like to remove inputs where value is '' or '.' here
window.location.href = '/search?' + serializedFormStr

어떤 아이디어를 어떻게 사용하여 이 작업을 수행할 수 있습 jQuery?

도움이 되었습니까?

해결책

나는 그것을보고 있었다 jQuery 문서 그리고 나는 우리가 이것을 한 줄로 사용할 수 있다고 생각합니다. 선택기:

$("#myForm :input[value!='']").serialize() // does the job!

분명히 #myform은 ID "myform"이있는 요소를 얻지 만 처음에는 나에게 덜 분명한 점은 우주 문자 #myform과 : 입력 사이에 필요합니다. 후손 운영자.

:입력 모든 입력, TextArea, Select 및 Button 요소와 일치합니다.

value! = '' 필터와 동일하지 않은 속성입니다. 이상한 (그리고 도움이되는) 것은 그 것입니다 모두 : 입력 요소 유형에는 값 속성이 선택 및 확인란 등이 있습니다.

마지막으로 값이 ''인 경우 입력을 제거합니다. (질문에서 언급했듯이) :

$("#myForm :input[value!=''][value!='.']").serialize()

이 경우 병치, 즉 서로 옆에 두 속성 선택기를 배치합니다, an and. 쉼표 사용 OR을 암시합니다. CSS 사람들에게 분명하다면 죄송합니다!

다른 팁

나는 Tom의 솔루션을 일할 수 없었지만 (?) .filter() 빈 필드를 식별 할 수있는 짧은 기능으로. jQuery 2.1.1을 사용하고 있습니다.

var formData = $("#formid :input")
    .filter(function(index, element) {
        return $(element).val() != '';
    })
    .serialize();

이것은 나를 위해 작동합니다 :

data = $( "#my_form input").filter(function () {
        return !!this.value;
    }).serialize();

regex와 함께 할 수 있습니다 ...

var orig = $('#myForm').serialize();
var withoutEmpties = orig.replace(/[^&]+=\.?(?:&|$)/g, '')

테스트 사례 :

orig = "a=&b=.&c=&d=.&e=";
new => ""

orig = "a=&b=bbb&c=.&d=ddd&e=";
new => "b=bbb&d=ddd&"  // dunno if that trailing & is a problem or not

나는 위의 솔루션을 사용했지만 나에게는 효과가 없었습니다. 그래서 나는 다음 코드를 사용했습니다

$('#searchform').submit(function(){

            var serializedData = $(this).serializeArray();
            var query_str = '';

            $.each(serializedData, function(i,data){
                if($.trim(data['value'])){
                    query_str += (query_str == '') ? '?' + data['name'] + '=' + data['value'] : '&' + data['name'] + '=' + data['value'];
                }
            });
            console.log(query_str);
            return false;
        });

누군가에게 유용 할 수 있습니다

jQuery의 소스 코드를 살펴 보겠습니다. 최신 버전의 라인 3287에서.

"Serialize2"및 "serializearray2"함수를 추가 할 수 있습니다. 물론 그들에게 의미있는 것을 지명하십시오.

또는 더 좋은 방법은 사용하지 않은 VAR을 직렬화 된 FormStr에서 꺼내는 것을 쓰는 것입니다. = & 중간 문자열 또는 끝에서 = regex Wizards를 찾는 일부 정규식?

업데이트:나는 Rogeriopvl의 답변을 더 좋아합니다 (+1). 특히 지금 당장 좋은 Regex 도구를 찾을 수 없기 때문입니다.

커피 스크립트에서 다음을 수행하십시오.

serialized_form = $(_.filter($(context).find("form.params input"), (x) -> $(x).val() != '')).serialize()

당신은 수도에서 보고 싶다.각()jquery 기능 할 수있는 반복을 통해 모든 요소의 선택,그래서이 갈 수 있는 방법을 확인 각각의 입력 필드를 보면 비어 있거나지 않고 그 제거에서 양식을 사용하여 요소입니다.제거().후에는 직렬화할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top