#jquery #input
#jquery #ввод
Вопрос:
Прямо сейчас мой HTML-код выглядит так:
<div id="register">
<table class="tab2">
<tr>
<td>Email:</td>
<td><input type="text" id="email" /></td>
</tr>
<tr>
<td>Confirm Email:</td>
<td><input type="text" id="confirmemail" /></td>
</tr>
</table>
</div>
И чтобы получить значения из входных данных с помощью jQuery, я должен сделать это:
$("#email").live('focusout', function() {
email = $(this).val();
});
$("#confirmemail").live('focusout', function() {
confirmemail = $(this).val();
});
Я знаю, что есть лучшие решения для выполнения этого (поскольку мое решение работает, но беспорядочно, поскольку существует более двух входных данных), но они не будут работать для меня. Я хотел бы использовать что-то вроде
$("#email").val();
и просто извлекайте значение по мере необходимости, а не сохраняйте его в переменной. Проблема в том, что всякий раз, когда я запускаю этот код, он всегда возвращает пустую строку. В чем причина этого?
Редактировать:
Я забыл упомянуть, что значения используются после запуска события click, например:
$("#dialog_next").live('click', function() {
Когда я запускаю код $(«#email»).val() после этого, он возвращает пустую строку.
Комментарии:
1. если приведенный выше код функционирует правильно, то
$("#email").val();
он также должен работать по назначению. Убедитесь, что вы выполняете этот фрагмент в нужный момент.2. Я забыл упомянуть, что он запускается после нажатия кнопки, Роб. Обновил свой пост.
3. Ваш код все равно должен работать. Можете ли вы предложить ссылку на фактическую страницу?
4. @PuppyKevin Чем ваша страница отличается от скрипки, которую я опубликовал, которая работает? (Помните, что jsfiddle автоматически добавляет в состояние ondomready.)
Ответ №1:
Обновление: эта скрипка работает нормально: http://jsfiddle.net/yt8pK /
Я ожидаю, что эта проблема как-то связана с тем, когда код фактически выполняется. Поскольку я не вижу проблемного кода, я могу только догадываться. Например, если у вас было вот так:
$(function () {
var email = $("#email").val();
function string getEmail() {
return email;
}
... (later you call getEmail to look at the value)
});
Это приведет к сбою, поскольку переменная email устанавливается перед вводом пользователем.
Подобный код будет работать:
$(function () {
function string getEmail() {
var email = $("#email").val();
return email;
}
... (later you call getEmail to look at the value)
});
Как выглядел ваш код, который не удался?
Комментарии:
1. Мой код выглядит так: $(document). готово(function() { $(«#dialog_next»).live(‘click’, function() { alert($(«#email»).val()); } } Который по какой-то причине по-прежнему ничего не возвращает. Кроме того, #dialog_next помещается в div #dialog, а таблица помещается в div #dialog_contents.
2. @puppykevin — Хорошо, проверьте свой код на наличие опечаток (например, ежедневный журнал), а затем начните изменять рабочую скрипку, чтобы она все больше и больше походила на ваш код, и найдите, когда он ломается. скрипты — это инструмент отладки.
3. @puppykevin — также неверен код, который вы опубликовали в комментарии выше… в нем не хватает нескольких
);
, поэтому, возможно, у вас просто ошибка синтаксиса javascript.