设置Jquery移动输入字段的文本

时间:2011-08-23 00:14:23

标签: jquery jquery-mobile

我在设置jQuery Mobile Text Input的显示文本时遇到问题。以下是我的代码

$('#editPartyName').textinput();
$('#editPartyName').val(party.name);

行为真的很奇怪,第一次模态显示,文本输入框是一个模态(jquery移动简单对话框插件),文本在模态的输入字段就好了。但是,第二次显示模态时,输入中的视觉文本将消失。当我检查元素的值时,警告($('#editPartyName).val());价值在那里并且是正确的。文本将不会显示在元素中。我正在使用JQM Beta 1.我还尝试在val()声明之后粘贴$('#editPartyName')。textinput()。

有人有什么建议吗?谢谢!

2 个答案:

答案 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都是唯一的。