Получение входных значений из таблиц с помощью jQuery

#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.