我在设置jQuery Mobile Text Input的显示文本时遇到问题。以下是我的代码
$('#editPartyName').textinput();
$('#editPartyName').val(party.name);
行为真的很奇怪,第一次模态显示,文本输入框是一个模态(jquery移动简单对话框插件),文本在模态的输入字段就好了。但是,第二次显示模态时,输入中的视觉文本将消失。当我检查元素的值时,警告($('#editPartyName).val());价值在那里并且是正确的。文本将不会显示在元素中。我正在使用JQM Beta 1.我还尝试在val()声明之后粘贴$('#editPartyName')。textinput()。
有人有什么建议吗?谢谢!
答案 0 :(得分:12)
我也碰到了这个。我能够使用$('#some_id').val('foobar')
设置文本输入的值,然后使用console.info($('#some_id').val());
将值打印到控制台,但在浏览器中,文本输入为空。
经过一段时间的努力,我发现$('input[id=some_id]').val('foobar')
按预期工作了。所以,显然,jQuery通过ID引用元素存在某种奇怪的错误。
答案 1 :(得分:3)
要创建jQuery Mobile文本输入样式,请使用 .textinput()
并刷新现有jQuery Mobile文本输入的视图,使用.textinput("refresh")
。因此,在后续调用中,您需要使用.textinput("refresh")
方法,并且在未初始化的文本输入上,您需要使用.textinput()
。
类似的东西:
$('#editPartyName').val(party.name).textinput('refresh');
我的经验是选择输入,但我相信它对于文本输入是相同的,这是我选择更新视图的方法:
$("select#foo").selectmenu("refresh");
此示例来自文档:http://jquerymobile.com/demos/1.0b1/docs/forms/forms-selects.html(页面底部)
除了更改input元素的值之外,您不需要做任何其他事情:
$('#editPartyName').val(party.name)
以下是使用jQuery Mobile 1.1.0的演示:http://jsfiddle.net/VbAKL/
这是一个使用jQuery Mobile 1.0B1的演示:http://jsfiddle.net/VbAKL/1/
很有可能创建此问题是因为您正在通过ID进行选择,并且DOM中可能会有多个ID实例。 jQuery Mobile站点一次可以在DOM中有多个“伪页面”,如果每个页面中都有一个ID为#header
的元素,那么当您尝试运行#header
的选择时只返回第一个实例。因此,您的$('...').val(...)
函数调用可能正在运行,而不是在正确的元素上。
简答:使用jQuery Mobile时,请确保您网站中所有网页的ID都是唯一的。