2011-08-19 12 views
2

jQuery에서 비어 있지 않은 값을 가진 텍스트 상자는 어떻게 만듭니 까?jQuery는 값이 비어있는 텍스트 상자 만 검색합니다.

예 :

<input type="text" id="i1" value="" /> 
<input type="text" id="i2" value="bla bla" /> 
<textarea id="i3">more bla bla</textarea> 
<input type="text" id="i4" value="" /> 

이 어떻게 나에게만을 입력 I2와 I3를 얻을 수있는 쿼리를 작성하려면 어떻게해야합니까? (한 번에 "for"루프를 피하려고합니다.)

고마워요!

+2

HTML에 'val'속성이 없습니다. 입력에는'value'가 있지만 textarea에는 없습니다. –

+0

빈'value' ** 속성 ** 또는 빈 입력 필드 (즉, 사용자가 데이터를 삽입 할 가능성이있는 * 후에 빈 필드)에 대해 이야기하고 있습니까? –

+0

@KARAZI : 텍스트 영역에 대한 가치가 있다고 확신합니다. – mowwwalker

답변

5

우선 HTML은 실제로 다음과 같이 표시되어야합니다.

<input type="text" id="i1" value=""> 
<input type="text" id="i2" value="bla bla"> 
<textarea id="i3">more bla bla</textarea> 
<input type="text" id="i4" value=""> 

나는이 지정되어 있지 않은 경우 대부분의 브라우저는 입력 필드 type="text"로 기본 설정됩니다 가정,하지만 난 당신이 valvalue을 의미 알아 내기 위해 그들을 믿을 수 있다고 생각하지 않습니다. 마지막으로 텍스트 영역 텍스트는 <textarea> 태그 사이에 있어야합니다.

질문에, 그래도.

$('input[type="text"], textarea').filter(function() { return $(this).val(); }); 

당신은 배열을 통해 반복하고 만족에만 값을 유지 jQuery의 grep 기능을 사용할 수 있습니다 당신은 $.grep에 전달하는 기능을 (에서 truthy 값을 반환) :이 줄은 당신이 원하는 것을 할 것입니다. 이 경우 전달할 배열은 $('input[type="text"], textarea') 선택기 (예 : 텍스트 필드 및 텍스트 영역)와 일치하는 jQuery 객체의 배열입니다. 원하는 요소를 선택하기 위해 전달하는 함수는 단순히 텍스트 상자 나 텍스트 영역의 값을 반환합니다. 비어있는 경우 반환 값은 거짓이며 노드는 제외되며 비어 있지 않은 문자열이면 반환 값은 true이고 노드가 포함됩니다.

+0

당신은 HTML에 대해 옳았습니다. 제 질문에 수정했습니다. 귀하의 솔루션은 완전히 멋지고 깨끗합니다. :) 감사! – Lucian

+0

'$ .grep'의 문제는 jQuery 객체가 아니라 배열을 반환한다는 것입니다. '.filter()'를 사용하는 것이 더 합리적입니다. 그리고 네, 입력 필드의 기본 유형은'텍스트'입니다. –

+0

맞습니다. 필터가 더 좋습니다. 내 솔루션을 변경했습니다. – ethan

0

당신이 다음이 작업을 수행 할 수있는 값 속성을 사용하는 경우 :이 작업 할 것

$('input[value!=""], textarea[value!=""]') 
+2

'textarea'에는 'value' 속성이 없습니다. . –

+0

오, 젠장, 맞아 ... : – gislikonrad

7

!

var $nonEmptyItems = $("input,textarea").filter(function() { 
    return $(this).val() != ""; 
}); 
+0

네, 그게 내가 찾고 있던 와트 야. 감사! – Lucian

0

당신이 가진 속성 선택기를 사용할 수 = 평가 :

$("input[value!='')") 
+0

텍스트 상자에서도 작동해야합니다. 감사! – Lucian

관련 문제