2014-09-26 2 views
0

입력 값이 기본값입니다. JQuery 입력 값 기준

<input type="text" class="srlz" value="" /> 

다음 내가 비어 있지 않은 입력을 serialize해야 JQuery와 기능이 있습니다 (I는 입력이 비어있을 것입니다 의미) 그래서 코드를 이런 식으로 뭔가있을 것입니다 경우 기본 값에서 아무것도 없을 것이다. (그 값이 아닌 -1 선택) 코드 기준 :

$(":input.srlz[value!='']").not(":has(option[value='-1']:selected)").serialize(); 

또는 :

$(":input.srlz").not(":has(option[value='-1']:selected)").not("[value='']").serialize(); 

하지만 입력에 대한 값을 입력더라도 코드가 있기 때문에, 한 입력 직렬화 않는다 기본값 (value="")을가집니다. 첫 번째 줄 대신 다음 입력을 테스트 한 결과 제대로 작동합니다.

<input type="text" class="srlz" /> 

어떻게 문제를 해결할 수 있습니까?

답변

1

입력 값 속성이 입력 값 속성과 같지 않습니다. 속성은 DOM에 설정되며 문자열 만 포함 할 수 있습니다. 속성은 객체의 일부이며 bool과 같은 다른 유형을 저장할 수 있습니다.

:input[value!='']을 사용할 때 속성을 확인하지만 입력을 편집하면 js가 속성을 설정합니다 (개발자 도구의 DOM 속성에서 실제 값을 볼 수없는 이유).

해결 방법은 value 속성을 확인하는 filter()를 만드는 것입니다.

$(...).filter(function() { 
    return $(this).val() !== ''; 
})... 

http://jsfiddle.net/mpuc52dk/2/