jQuery를 사용하여 입력이 비어 있는지 확인하십시오.


491

모든 필드를 채우려는 양식이 있습니다. 필드를 클릭 한 다음 채워지지 않으면 빨간색 배경을 표시하고 싶습니다.

내 코드는 다음과 같습니다.

$('#apply-form input').blur(function () {
  if ($('input:text').is(":empty")) {
    $(this).parents('p').addClass('warning');
  }
});

채워지는 필드와 상관없이 경고 클래스를 적용합니다.

내가 무엇을 잘못하고 있지?


답변:


764
$('#apply-form input').blur(function()
{
    if( !$(this).val() ) {
          $(this).parents('p').addClass('warning');
    }
});

그리고 당신은 반드시 필요하지 않습니다 .length또는 그것의 있는지 >0당신이 가독성을 목적으로하고 싶은 경우는 false 어쨌든에 빈 문자열 평가하여 이래로 :

$('#apply-form input').blur(function()
{
    if( $(this).val().length === 0 ) {
        $(this).parents('p').addClass('warning');
    }
});

항상 텍스트 필드 요소에서 작동한다고 확신하면을 사용할 수 있습니다 this.value.

$('#apply-form input').blur(function()
{
      if( !this.value ) {
            $(this).parents('p').addClass('warning');
      }
});

또한 $('input:text')여러 요소를 가져 오거나 컨텍스트를 지정하거나 this고독한 요소에 대한 참조를 원할 경우 (컨텍스트의 자손 / 자식에 하나의 텍스트 필드가있는 경우) 키워드를 사용 한다는 점에 유의해야 합니다.


2
if (! $ (this) .val ())에서 if (! $ (this) .val () && $ (this) .val ()! = ""로 변경하면 더 잘 작동한다고 생각합니다. )
alfasin

2
$ (this) .val (). length <1
Tomas

3
YourObjNameSpace.yourJqueryInputElement.keyup (function (e) {if ($. trim ($ (this) .val ())) {// 잘린 값은 진실} else {// 잘린 값은 거짓}}
Frankie Loscavio

필드 길이를 너무 자주 확인 .val().length하여 완전히 간과 하고 대신 .length()요소 자체 를 사용하고있었습니다 .
Tass

견고성을 높이기 위해 마지막에 .trim ()을 추가합니다
HQuser

155

모두가 올바른 생각을 가지고 있지만, 나는 좀 더 명확하고 가치를 정돈하는 것을 좋아합니다.

$('#apply-form input').blur(function() {
     if(!$.trim(this.value).length) { // zero-length string AFTER a trim
            $(this).parents('p').addClass('warning');
     }
});

.length를 사용하지 않으면 '0'항목이 불량으로 표시 될 수 있으며 $ .trim없이 5 개의 공백 항목이 ok로 표시 될 수 있습니다. 행운을 빌어 요.


18
확실히 맞아. 트리밍은 특히 까다로운 WYSIWYG 편집기 (예 : jWYSIWYG)를 사용할 때 필요합니다.
Josh Smith

값을 val로 변경하는 것이 좋습니다 ---> if (! $. trim (this.val) .length) {// 트림 $ (this) .parents ( 'p'). addClass ( ' 경고'); }
K. Kilian Lindberg

this.val것이 undefined있다. 그것은 필요 $(this).val()하지만 브라우저에는 이점이 없으므로 간결함 / 속도로 생략했습니다.
Alex Sexton

33

흐림 효과로하는 것이 너무 제한적입니다. 양식 필드에 초점이 있다고 가정하므로 제출시 입력을 통해 매핑하는 것을 선호합니다. 수년간 화려한 흐림, 초점 등의 트릭을 다루고 나면 더 단순하게 유지하면 유용성을 높일 수 있습니다.

$('#signupform').submit(function() {
    var errors = 0;
    $("#signupform :input").map(function(){
         if( !$(this).val() ) {
              $(this).parents('td').addClass('warning');
              errors++;
        } else if ($(this).val()) {
              $(this).parents('td').removeClass('warning');
        }   
    });
    if(errors > 0){
        $('#errorwarn').text("All fields are required");
        return false;
    }
    // do the ajax..    
});

20
if ($('input:text').val().length == 0) {
      $(this).parents('p').addClass('warning');
}

잡히지 않은 TypeError : 정의되지 않은 속성 '길이'를 읽을 수 없습니다
Chuck D

@ChuckD 나는 같은 오류가 발생하고 내가 그것을 찾을 수 없는 $것으로 나타났습니다if (('input:text').val().length == 0) {if ($('input:text').val().length == 0) {
fWd82

16

당신은 또한 사용할 수 있습니다 ..

$('#apply-form input').blur(function()
{
    if( $(this).val() == '' ) {
          $(this).parents('p').addClass('warning');
    }
});

공백이 의심되면 다음을 시도해보십시오.

$('#apply-form input').blur(function()
{
    if( $(this).val().trim() == '' ) {
          $(this).parents('p').addClass('warning');
    }
});

9

아무도 언급하지 않은 방법

$(this).filter('[value=]').addClass('warning');

나에게 더 jquery 같은 것 같다


3
선택기 필터의 작동 방식을 변경했기 때문에 jQuery 1.9+에서는 작동하지 않습니다. .. jsfiddle.net/6r3Rk
Wick


1
필드가 값 속성으로 시작했는지 여부 만 테스트한다고 생각합니다. 유효성 검사에 필요한 실제 양식 필드 값은 테스트하지 않습니다. jsfiddle.net/T89bS ... value 속성이없는 필드는 입력 내용에 관계없이 연어로 때립니다.
Wick

5

키 업 이벤트는 사용자가 상자를 지웠는 지 감지합니다 (즉, 백 스페이스는 이벤트를 발생 시키지만 백 스페이스는 IE에서 키 누르기 이벤트를 발생시키지 않습니다)

    $("#inputname").keyup(function() {

if (!this.value) {
    alert('The box is empty');
}});

4

대신 jQuery 유효성 검사 플러그인 사용을 고려하십시오 . 단순한 필수 필드에는 약간 과잉 일 수 있지만 아직 생각조차하지 않은 최첨단 사례를 처리 할 수있을 정도로 성숙합니다.

"필수"클래스로 필수 필드에 태그를 지정하고 $ (document) .ready ()에서 $ ( 'form'). validate ()를 실행하면됩니다.

빠른 배송을 위해 Microsoft CDN에서도 호스팅됩니다 : http://www.asp.net/ajaxlibrary/CDN.ashx


3

:empty의사 선택은 당신이 값을 확인해야 요소가 더 차일를 포함하지 있는지 확인하기 위해 사용됩니다 :

$('#apply-form input').blur(function() {
     if(!this.value) { // zero-length string
            $(this).parents('p').addClass('warning');
     }
});

3

당신이 생각하고 싶은 또 다른 것이 있습니다. 현재 비어있는 경우에만 경고 클래스를 추가 할 수 있습니다. 양식이 더 이상 비어 있지 않을 때 클래스를 다시 제거하는 방법은 무엇입니까?

이처럼 :

$('#apply-form input').blur(function()
{
    if( !$(this).val() ) {
          $(this).parents('p').addClass('warning');
    } else if ($(this).val()) {
          $(this).parents('p').removeClass('warning');
    }
});

3

function checkForm() {
  return $('input[type=text]').filter(function () {
    return $(this).val().length === 0;
  }).length;
}


2

다음은 선택된 입력에 키업을 사용하는 예입니다. 또한 공백 문자의 시퀀스가 ​​확실한 응답을 유발하지 않도록 트림을 사용합니다. 검색 창 또는 해당 유형의 기능과 관련된 항목을 시작하는 데 사용할 수있는 예입니다.

YourObjNameSpace.yourJqueryInputElement.keyup(function (e){
   if($.trim($(this).val())){
       // trimmed value is truthy meaning real characters are entered
    }else{
       // trimmed value is falsey meaning empty input excluding just whitespace characters
    }
}

2
$(function() {
  var fields = $('#search_form').serializeArray();
  is_blank = true;
  for (var i = 0; i < fields.length; i++) {
    // excluded fields
    if ((fields[i].name != "locale") && (fields[i].name != "utf8")) {
      if (fields[i].value) {
        is_blank = false;
      }
    }
  }
  if (is_blank) {
    $('#filters-button').append(': OFF');
  }
  else {
    $('#filters-button').append(': ON');
  }
});

모든 필드가 비어 있는지 확인하고 Filter_button에 ON 또는 OFF를 추가하십시오.


1

다음과 같이 시도해보십시오.

$('#apply-form input[value!=""]').blur(function() {
    $(this).parents('p').addClass('warning');
});

.blur()빈 값을 가진 입력에만 이벤트 를 적용 합니다.


좋은 해결책이지만, 함수 호출시 입력이 비어 있지 않은 경우와 입력의 "value"속성에 값이 저장된 경우에만 작동합니다.
Fabian von Ellerts

0
<script type="text/javascript">
$('input:text, input:password, textarea').blur(function()
    {
          var check = $(this).val();
          if(check == '')
          {
                $(this).parent().addClass('ym-error');
          }
          else
          {
                $(this).parent().removeClass('ym-error');  
          }
    });
 </script>// :)

공백을 다듬어야 할 수도 있습니다.
랩터

0

HTML 5를 사용하면 새로운 기능 "필수"를 사용할 수 있으며 다음과 같이 원하는 태그에 추가 할 수 있습니다.

<input type='text' required>


2
그리고 모든 브라우저가 이것을 지원하지는 않습니다 ... js 확인과 서버 측 확인을 추가해야합니다
Reign.85

질문 제목, "jQuery를 사용하여 입력이 비어 있는지 확인"
JoshYates1980

0

훌륭한 답변 모음은 :placeholder-shownCSS 선택기를 사용 하여이 작업을 수행 할 수 있다고 덧붙이고 싶습니다 . 특히 jQ를 사용하고 있고 입력에 자리 표시자가있는 경우 특히 IMO를 사용하는 것이 더 깔끔합니다.

if ($('input#cust-descrip').is(':placeholder-shown')) {
  console.log('Empty');
}

$('input#cust-descrip').on('blur', '', function(ev) {
  if (!$('input#cust-descrip').is(':placeholder-shown')) {
    console.log('Has Text!');
  }
  else {
    console.log('Empty!');
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="text" class="form-control" id="cust-descrip" autocomplete="off" placeholder="Description">

필요한 입력이있는 경우 :valid:invalid선택기를 사용할 수도 있습니다 . 입력에 필수 속성을 사용하는 경우 이러한 선택기를 사용할 수 있습니다.


0

깨끗한 CSS 전용 솔루션은 다음과 같습니다.

input[type="radio"]:read-only {
        pointer-events: none;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.