2014-10-29 190 views
0

我有一些非常簡單的事情來獲得輸入值。Jquery輸入值沒有正確顯示

的代碼看起來是這樣的:

var $a = $('.custom-amount').val(); 
$('.custom-amount').on('change', function() { 
    alert($a) 
}) 

而且我輸入:

<div class='custom-amount'> 
    <input placeholder='Custom Amount' type='text-area'> 

出於某種原因,我的警示是空的。有沒有人看到最新的錯誤?

回答

2

您的選擇更改爲$('.custom-amount input'),並得到後的變化事件觸發值,例如

$('.custom-amount input').on('change', function() { 
    var a = $(this).val(); 
    alert(a); 
}); 

現在,你想獲得一個div,這是行不通的價值。您需要獲取輸入的值。

編輯:此外,它看起來像你試圖顯示textarea。嘗試更換此...

<input placeholder='Custom Amount' type='text-area'> 

有了這個...

<textarea placeholder='Custom Amount'></textarea> 

這可能會幫助:

http://jsfiddle.net/d648wxry/

+0

哦。是的,那也是。接得好;我會更新我自己的答案。 – 2014-10-29 17:59:56

+0

+1對其他人使用'this' – Kypros 2014-10-29 18:00:44

+0

和-0.25用於複製/粘貼變量名稱中的$符號。修正了它雖然:)雖然:) – Kypros 2014-10-29 18:02:15

0

首先,您只能指定$a以外的change函數。如果你保持你的代碼更好的排列,這將更加清晰(請參閱我對你的文章所做的修改)。這是做正確的方式:

$('.custom-amount').on('change', function() { 
    var $a = $('.custom-amount').val(); 
    alert($a) 
}); 

所有第二,類custom-amount被分配到<div><input>元素代替。您必須選擇<input>元素,而不是<div>。更改您的標記:

<div> 
    <input placeholder='Custom Amount' type='text-area' class='custom-amount'> 
</div> 
+0

在變量名中有'$'是有效的。我的目標是對OP的代碼進行微小的更改,這樣我的更改會更容易理解。 (這也是爲什麼我決定放棄將第二個jQuery選擇器更改爲'$(this)'。) – 2014-10-29 18:09:59

1

因爲你的div有沒有價值。將您的代碼更改爲:

var $input = $('.custom-amount input'); 
$input.on('change', function() { 
    var $a = $input.val(); 
    alert($a) 
}) 
+0

@Kypros我可以在變量中添加'$',如果我想要的話,對我來說,更容易識別是包含「DOM對象」的變量或其他類型的值。至於'$ a',我把它留作作者寫的。 – 2014-10-29 18:07:15

+0

對於'$ input'來說,它看起來很好,但對於$ a而言,並不是很多,但我明白你的意思。 – Kypros 2014-10-29 18:15:04

2

問題很簡單,您正在獲取div元素的值。相反,您應該檢索input元素的值,以便將'custom-amount'類添加到輸入中。

此外,您還需要執行事件內部的val()方法才能更新值。

var $a = $('.custom-amount'); 

$('.custom-amount').on('change', function() { 
    alert($a.val()); 
});