2011-01-21 3 views
2

나는 단지 <input type="text"></input>을 html 본문에서 가져오고 싶습니다.JQuery로 본문의 모든 입력 텍스트를 선택하십시오.

function toUpper() { 
    var elements = $("body input:text"); 
    for(var i=0; i<elements.lenght; i++){ 
     elements[i].val(elements[i].val().toUpperCase()); 
    } 
} 

하지만 ... 나는 JQuery와 선택기에 뭔가를 누락 될 수 있습니다 작동하지 않습니다 ...하지만 내가 무엇을 알고하지 않습니다

지금까지 나는이 있습니다.

감사합니다.

+0

typo :'lenght' ->'length' --- 또한'.each()'를 사용하십시오 : http://api.jquery.com/each/이 경우 실제로'.val()': http://api.jquery.com/val/#val2 (함수 형식을보십시오) – Orbling

답변

0
$("body input:text").each(function(){ 
     $(this).val($(this).val().toUpperCase()); 
}); 
5
function toUpper() { 
    $("input:text").val(function(i, val) { 
     return val.toUpperCase(); 
    });   
} 

이것은 아마도 더 편리합니다.
데모 : http://www.jsfiddle.net/4yUqL/85/

+0

+1, 좋은 대답, 왜냐하면'elements [i]'가 반환하기 때문에 원래의 방식으로 작동하지 않는 다른 이유가 있습니다. unwrap 노드 –

+0

내 영웅이이 작품을한다면. – amosrivera

+0

흠 .. 나는 큰 셔츠를 원한다. J ** ** please ... :) – jAndy

0

당신의 선택은 body 부분이 조금 필요하지만 (나는 당신이 신체의 어느 input의 외부가없는 희망) 괜찮습니다.

하지만 나머지는 문제가 있습니다. jquery 객체의 색인을 생성하면 실제 HtmlInputElement (또는 무엇이든) 객체 인 이 아닌 객체가 jquery 래퍼 인이됩니다. 따라서 jquery .val() 명령을 먼저 jquery 객체로 변환하지 않고 사용할 수 없습니다. 다음은 현재 코드의 수정 된 버전입니다 :

var elements = $("input:text"); 
for(var i = 0; i< elements.length; i++) 
    $(elements[i]).val($(elements[i]).val().toUpperCase()); 

그러나 jAndy가 제안한 기능적 접근 방법은 훨씬 더 깨끗한 방법입니다.

관련 문제