2014-10-29 2 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

Oh. Да, это тоже. Хороший улов; Я обновлю свой ответ. –

+0

+1 Над другими для использования 'this' – Kypros

+0

И -0.25 Для копирования/вставки знаков $ в имена переменных. Исправлено это для вас, хотя :) – Kypros

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)'.) –

1

Причина ваш DIV не имеет значения. Измените свой код на:

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

@Kypros Я могу добавить '$' в переменную, если захочу, для меня легче идентифицировать эту переменную, содержащую объект DOM или какой-либо другой тип значения. Что касается '$ a', я оставил его, как написал автор. –

+0

Для '$ input' он выглядит« хорошо », но для' $ a', ну не так много, но я понимаю, что вы имеете в виду. – Kypros

2

Вопрос очень прост, вы получаете значение элемента div. Вместо этого вы должны получить значение входного элемента, чтобы на вкладку был добавлен класс «custom-amount».

Также необходимо выполнить метод val() внутри события, чтобы обновить значение.

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

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