2011-04-21 3 views
4

텍스트 영역에 100자가 넘는 문자가있는 경우 제출 버튼을 활성화하는 코드입니다. 그러나 나는 그것을 얻을 수 없습니다. 아마 jquery 버전이 잘못 되었나요? 나는 모른다.텍스트 영역의 문자 수를 확인하는이 jquery 형식의 문제점은 무엇입니까?

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script> 
<form> 
    <textarea id="textareaId"></textarea> 
    <input type="submit" id="submitId" disabled="disabled" /> 
</form> 
<script type="text/javascript"> 
    setInterval(function() { 
    if(("#textareaId").val().length > 100) { 
     $("#submitId").removeAttr("disabled"); 
    } else { 
     $("#submitId").attr("disabled", "disabled"); 
    } 
    }, 500); //Runs every 0.5s 
</script> 

답변

6

당신이 누락 앞에 $ 누락하고 onchange 대신 setInterval (A)의를 사용하려고하고 있습니다 :

$("#textareaId").change(function() { 
    if((this.value).length > 100) { 
    $("#submitId").removeAttr("disabled"); 
    } else { 
    $("#submitId").attr("disabled", "disabled"); 
    } 
}).keyup(function(){$(this).change()}); 

바이올린 : http://jsfiddle.net/maniator/7Kch9/

+0

니스,하지만 텍스트 영역 외부를 클릭하지 않으면 제출 버튼을 사용할 수 없게됩니다 ... – EnexoOnoma

+0

@Punkis, 1 초, 잘못된 업데이트를 할 수 있습니다 – Neal

+0

@Punkis 제가 내 대답을 업데이트하고 내 바이올린 – Neal

7

이보다 효율적으로 할 수있는 $("#textareaId")
에 의해을 ("#textareaId")

1

왜 0.5 초마다 확인하고 싶습니까? 당신은 단순히 텍스트 입력의 변경을 체크 할 수있었습니다.

$('#textareaID').change(function() { 
    //you logic for checking 100 characters here. 
}); 
+0

@Neal hehe .. "네가 대답 하는게 좋을뿐만 아니라 너의 타이핑 속도 또한 SO에서 중요하다"라는 것을 알게되었다 : D – Anji

0

'변경'보다는 '키 업'에 약간 다른 접근 방식 바인딩. 또한 HTML이 아닌 JS로 버튼을 비활성화하는 것이 가장 좋습니다.

http://jsbin.com/aviji4

+0

네, 사실, keyUp과 change work가 똑같이 작동합니다. 잘 – Neal

0

나는 같은 원리하지만, 나머지보다가 약간 다른 수행 한 다음 working jsFiddle demo

var $submit = $("#submitId"), 
    $textarea = $("#textareaId"), 
    NUM_OF_CHARS_TO_ENABLE_SUBMIT = 100; 

$textarea.keyup(function() { 

    if (this.value.length > NUM_OF_CHARS_TO_ENABLE_SUBMIT) { 

     $submit.removeAttr("disabled"); 

    } else { $submit.attr("disabled", "disabled"); } 

}); 

보기.

+0

대답의 사본은 이미 명시된 .... – Neal

+0

@ Neal - 당신을 복사 할 필요가 없습니다, 친구. 나는 내 것과 똑같은 또 다른 해결책을 본다는 것을 믿지 않는다. 그리고 저는 그것이 같은 원리 였다고 말했습니다. keyup()을 사용하고, 약간 다릅니다. 어떤 사람들은 멋진 코드를 좋아합니다. –

+0

@Neal - 물론 필요하지 않은 change() 및 keyup()에 바인딩됩니다. Mine은 상수를 사용하여 쉽게 업데이트, 캐싱 및 텍스트 입력 작업을 수행하고 붙여 넣기를 마우스 오른쪽 단추로 클릭합니다. 나는 그것이 생산 준비가 잘되어 있고 최적화 된 코드라고 생각한다. –

관련 문제