【问题标题】:JQuery Mobile: .val() not workingJQuery Mobile:.val() 不工作
【发布时间】:2011-01-17 00:35:53
【问题描述】:

您好,

我有以下 jQuery Mobile 代码:

<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);
  });
});

'hi' 出现在第一个警告框中,但是 '' 出现在第二个警告框中 - 即完全空白!!!

我也试过 document.getElementById('verifySMS_code') 没用。

我什至尝试过 jquery mobile 1.0a3pre

这对我来说是一个非常严重的问题,我不知道如何解决它。

希望有人能帮忙。

非常感谢,

【问题讨论】:

  • 你在输入框中输入了什么吗?

标签: jquery mobile jquery-mobile


【解决方案1】:
  1. 安装萤火虫

  2. 测试它

&lt;input id="verifySMS_code" type="text" value="someoldvalue" /&gt;

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

这就是为什么:

  • 输入中的value= 将显示 如果获取的有问题 价值或将您输入的内容 进入输入元素(jquery mobile 在输入上构建一些东西)
  • 您不会生成匹配“#verifySMS_submit”的新提交按钮 所以你不需要live()那里
  • 点击并提交试试看。我想jquery mobile正在放 文本从输入控件到 在某些特定时刻输入自己 就像输入上的blur 事件,所以它 当你点击某物时发生 否则,不要在那之前
  • console.log($('input#verifySMS_code')); 将在控制台中弹出您的元素。 如果弹出空数组 - 没有 这样的元素,它是一个选择器 问题。

测试具有重复 ID 的输入。

这显示所有 id:$('input').each(function(){console.log($(this).attr('id'));}); 在 firebug 中运行它,它还将指向 DOM,因此您可以单击并在 HTML 选项卡中找到它们。

【讨论】:

  • 您好,非常感谢您的回复。到目前为止真的很有帮助。我接受了您关于设置 value="someoldvalue" 的建议。此值出现在 console.log 上。当我删除 value="someoldvalue" 并在 $('#verifySMS_code').val() 上执行 console.log 时,它只返回一个空字符串......我完全被卡住了。到目前为止浪费了大约2天!我认为 jQuery Mobile 正在对 DOM 做一些事情,但我无法弄清楚......在 Firefox 和 Chrome 中都试过了。
  • jquery mobile 在输入之上构建一个组件。我现在有点忙,所以我无法复制它。如果您在某处发布该内容并在评论中发布链接,我会对其进行调查。
  • 知道了。不知何故,有两个相同的页面,两个输入具有相同的 ID。 jQuery 需要唯一的 id,它只能通过 id 找到一个元素 - 从顶部开始的第一个元素。在 firebug 中运行 $('input').each(function(){console.log($(this).attr('id'));}); 并亲自查看。
  • 附言。 html 看起来有点乱——一些页面之间有很多脚本标签。那个是从哪里来的?你是在使用 jqm 默认加载方法还是以某种方式破解它?
【解决方案2】:

我遇到了同样的问题。不知何故,JQuery Mobile 似乎不能很好地处理语法("#someId")

相反,("input[id=verifySMS_code]").val() 应该会有所帮助

【讨论】:

    【解决方案3】:

    如果您有重复的 id(在页面加载或使用 changePage() 等之后),请尝试访问活动页面对象的子项... 前任。

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

    替换为

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

    不管怎样,对我有用:)

    【讨论】:

      【解决方案4】:

      我在特定页面上遇到了同样的问题。然后我意识到我有一些代码将changePage() 调用到同一页面,从而复制了 dom 元素及其 id。

      【讨论】:

        猜你喜欢
        • 2011-02-28
        • 2011-11-28
        • 1970-01-01
        • 1970-01-01
        • 2013-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-15
        相关资源
        最近更新 更多