2011-01-17 4 views
3

Привет,JQuery Mobile: .val() не работает

У меня есть следующий 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 мобильного 1.0a3pre

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

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

Большое спасибо заранее,

+1

ли вы что-то типа в поле ввода? –

+0

@ Box9 rotfl! но близко. – naugtur

+0

@ Box9 Err ... Да – Eamorr

ответ

5
  1. Установка поджигатель

  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 мобильного ставят текста от входного контроля до самих входа в некоторых определенные моменты как blur событие на входе, так что происходит, когда вы нажимаете что-то еще не до того, что
  • console.log($('input#verifySMS_code')); появится ваш элемент в консоли. если пустой массив всплывает - не было такой элемент, и это селектор проблема.

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

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

+0

Эй, большое спасибо за ваш ответ. Это действительно помогло софар. Я принял ваш совет установить значение = "someoldvalue". Это значение появляется на console.log. Когда я удаляю значение = "someoldvalue" и делаю console.log на $ ('# verifySMS_code'). Val(), он просто возвращает пустую строку ... Я полностью застрял. Отработано около 2 дней sofar! Я думаю, что jQuery Mobile делает что-то в DOM, и я не могу понять это ... Пробовал это как в Firefox, так и в Chrome. – Eamorr

+0

jquery mobile создает компонент над входом. Я немного занят, поэтому не могу воспроизвести его. Я рассмотрю это, если вы опубликуете что-нибудь и опубликуете ссылку в комментарии. – naugtur

+0

Понял. Так или иначе есть две идентичные страницы с двумя входами с одинаковым идентификатором. jQuery требует уникальных идентификаторов и находит только один элемент по id - первый сверху. Запустите '$ ('input'). Each (function() {console.log ($ (this) .attr ('id'));});' в firebug и убедитесь сами. – naugtur

2

У меня была та же проблема. Так или иначе, это выглядит как JQuery Mobile не обрабатывает хорошо синтаксис ("#someId")

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

0

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

2

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

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

заменить

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

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

Смежные вопросы