2011-01-21 14 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(); 
    });   
} 

これはおそらく、より便利です。
デモbody一部は(私はあなたが身体のあらゆるinputの外を持っていないことを望む)ビット不要ですがhttp://www.jsfiddle.net/4yUqL/85/

+0

+1、良い答えですが、元はうまくいきませんでしたが、' elements [i] 'が返すラップ解除されたノード –

+0

これが私のヒーローである場合は。 – amosrivera

+0

hmmm ..私は大きな** Jが**私のシャツにしてくださいしてください... :) – jAndy

0

あなたのセレクタは、罰金です。

しかし、残りは問題があります。 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によって提案された機能的なアプローチは、それを行うための非常にクリーンな方法です。

関連する問題