2014-10-29 119 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()); 
});