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

use*_*824 6 jquery jquery-mobile

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

$('#editPartyName').textinput();
$('#editPartyName').val(party.name);
Run Code Online (Sandbox Code Playgroud)

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

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

Mat*_*ark 12

我也碰到了这个.我能够设置文本输入$('#some_id').val('foobar')的值,然后将值打印到控制台console.info($('#some_id').val());,但在浏览器中,文本输入为空.

经过一段时间的努力,我发现它$('input[id=some_id]').val('foobar')按预期工作.所以,显然,jQuery通过ID引用元素存在某种奇怪的错误.

  • 如果您通过ID引用,请确保它对您的整个站点是唯一的,因为jQuery Mobile伪页面存储在同一个DOM中.因此,如果您尝试在一个页面上选择"#header",则可能在另一个页面上选择"#header"(使用ID,返回找到的第一个,并忽略其余的). (2认同)

Jas*_*per 3

创建您使用的 jQuery Mobile 文本输入样式.textinput()并刷新您使用的现有 jQuery Mobile 文本输入的视图.textinput("refresh")。因此,在后续调用中,您需要使用该.textinput("refresh")方法,而在未初始化的文本输入上,您需要使用.textinput().

就像是:

$('#editPartyName').val(party.name).textinput('refresh');
Run Code Online (Sandbox Code Playgroud)

我的经验是选择输入,但我相信文本输入也是如此,以下是我为选择更新视图所做的操作:

$("select#foo").selectmenu("refresh");
Run Code Online (Sandbox Code Playgroud)

此示例来自文档:http://jquerymobile.com/demos/1.0b1/docs/forms/forms-selects.html(页面底部)

更新

除了更改输入元素的值之外,您不需要执行任何操作:

$('#editPartyName').val(party.name)
Run Code Online (Sandbox Code Playgroud)

这是使用 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 在站点中的所有页面中都是唯一的。