JQuery Mobile: .val () не работает - PullRequest
3 голосов
/ 17 января 2011

Привет,

У меня есть следующий код мобильного jQuery:

<div data-role="content">
  A confirmation code has been sent to your mobile phone via SMS
  <br><br>
  To proceed, please enter the 3-digit confirmation code below:
  <br>
  <input id="verifySMS_code" type="text"  /><br>
  <a id="verifySMS_submit" href="#" data-role="button">Submit</a>
</div>

Вот мой JavaScript:

$(document).ready(function(){
  $("#verifySMS_submit").live("click",function() {
    alert('hi');
    var code=$('input#verifySMS_code').val();
    alert(code);
  });
});

Привет появляется в первом предупреждениино во втором окне оповещения появляется поле '' - т.е. абсолютно пусто !!!

Я тоже пробовал document.getElementById ('verifySMS_code'), но безрезультатно.

У меня естьдаже пробовал jquery mobile 1.0a3pre

Это действительно серьезная проблема для меня, и я не знаю, как ее исправить.

Я надеюсь, что кто-то может помочь.

Многиезаранее спасибо

Ответы [ 4 ]

5 голосов
/ 17 января 2011
  1. Установить firebug

  2. Проверьте это с помощью

<input id="verifySMS_code" type="text" value="someoldvalue" />

и

$(document).ready(function(){
  $("#verifySMS_submit").bind("submit",function() {
    console.log($('#verifySMS_code'));
    var code=$('#verifySMS_code').val();
    console.log(code);
  });
});

Вот почему:

  • value= на входе покажет если это проблема с получением значение или положить то, что вы вводите в элемент ввода (мобильный jquery строит что-то на входе)
  • вы не будете генерировать новые кнопки отправки, соответствующие "#verifySMS_submit" так что вам не нужно live() там
  • попробуйте с щелчком и с подтверждением Я полагаю, JQuery Mobile ставит текст из элемента управления вводом в вводить себя в определенные моменты как blur событие на входе, так что происходит, когда вы нажимаете что-то иначе, не раньше этого
  • console.log($('input#verifySMS_code')); выскочит ваш элемент в консоли. если всплывает пустой массив - не было такой элемент и это селектор проблема.

Проверка входов с дублированными идентификаторами.

Показывает все идентификаторы: $('input').each(function(){console.log($(this).attr('id'));}); Запустите его в firebug, и он также будет указывать на DOM, чтобы вы могли щелкнуть и найти их на вкладке HTML.

2 голосов
/ 13 августа 2013

Если у вас есть дубликаты идентификаторов (после загрузки страницы или использования changePage() и т. Д.), Попробуйте получить доступ к дочерним элементам активного объекта страницы ... Пример.

var myval = $('form#src #search').val(); // returns incorrect (:first) value of the element   

заменить на

var myval = $.mobile.activePage.find('form#src #search').val(); 

В любом случае, сработало от меня:)

2 голосов
/ 28 сентября 2011

У меня была такая же проблема. Почему-то похоже, что JQuery Mobile плохо обрабатывает синтаксис ("#someId")

Вместо этого ("input[id=verifySMS_code]").val() должно помочь

0 голосов
/ 30 июля 2013

У меня была такая же проблема на определенной странице. Затем я понял, что у меня есть некоторый код, который вызывает changePage() на той же странице, таким образом дублируя элемент dom и его идентификатор.

...