2011-12-18 2 views
1

私は、このHTMLフォームのテキストボックスに入力された値を読みたいと思っていましたが、これはjQuery val()メソッドを試しましたが、jQuery val()メソッドが機能していない

HTML:

<form method="POST" id="payment-form"> 
    <p> 
     <label class="card-number" for="txt_cardno"><span>Card Number:</span></label> 
     <input type="text" size="20" autocomplete="off" class="card-number" id="txt_cardno" name="cardno" /> 
    </p> 
    <p class="submit submit-button"><a class="btn" href="#">Charge Card</a><br><a class="btn" href="#" onClick="return false">Go Back</a></p> 
    <div class="clear"></div> 
</form> 

Javascriptを:

$(document).ready(function() { 
    $(".submit").live("click", function(e) { 
     e.preventDefault(); 
     var card_num = $('.card-number').val(); 
     alert(card_num); 
    }); 
}); 

jsfiddleあなたは<label><input>"card-number"クラスの両方を与えてくれたhttp://jsfiddle.net/74neK/1/

+2

それが指して価値があります(あなたのリンクされたJSのフィドルで)jQuery 1.7.1を使用しています。この場合、['live()'](http://api.jquery.com/live/)は非推奨です。代わりに['on()'](http://api.jquery.com/on/)を使用してください。 –

+0

thanks @DavidThomasはon() – user993563

答えて

6

を(高速):

var card_num = $('#txt_cardno').val(); 
+0

あなたはその場に出ました:) – user993563

4

です。

セレクタでinputを指定します。そうでない場合は、.val()は、最初に見つかった要素の値を返します(label)。

var card_num = $('input.card-number').val(); 

http://jsfiddle.net/74neK/3/


あなたはマイクロ最適化と本当に心配している場合は、ネイティブメソッドを使用する必要があります。それにアクセスするためのIDを使用し

var card_num = (document.getElementById('txt_cardno')||{}).value; 

http://jsfiddle.net/74neK/5/

+0

を使用しますが、なぜその余分な入力を追加する必要がありますか? ? – user993563

+1

@ user993563:私はちょうど私の答えをより多くの情報で更新しました。 jQueryが複数の要素を見つけると、 '.val()'は最初に見つかった要素の値だけを返します。この場合、 'label'が最初です。なぜなら、*(ラベルには値がないので)*は得られません。 – RightSaidFred

+1

説明のために、実際に役立つ! – user993563

3

あなた<label> jQueryのしようと、あなたの<label>の値を取得するために失敗しているので、Sさんclassはあなた<input>と同じである "と。その代わり、nameまたはidして<input>を参照してください:jQueryのははるかに高速ですdocument.getElementById、それを最適化しているため

$('#txt_cardno').val() 

私は関係なく、IDをお勧めします。

3

を要素にアクセスするためのIDを使用してみてください:

var card_num = $('#txt_cardno').val(); 

http://jsfiddle.net/74neK/4/ < - 例