我正在使用jQuery mobile 1.4.2,而且我遇到了一些非常恼人的单选按钮问题。问题是他们不能工作。
我已经浏览过互联网,并没有设法找到解决方案;所以也许其他人和我一样没有这个问题。我确实认为我做了所有事情"对",所以希望这个问题可以帮助其他人,如果他们也遇到这个问题。
页面can be found here的输出HTML,但用于生成它的代码是:
<form method="post" action="/category/log">
<input type="hidden" name="id" value="<%: Model.CurrentCategory.Id %>" />
<div data-role="controlgroup">
<% Dim elementId = "personId"%>
<% For Each e In Model.Engineers%>
<% Dim formattedId = elementId & "-" & e.Id%>
<input type="radio" name="<%:elementId %>" id="<%:formattedId %>" value="<%:e.Id %>" />
<label for="<%:formattedId %>"><%:e.Name%></label>
<%Next%>
</div>
<input type="submit" value="Log Visit" />
</form>
单击单选按钮时,会生成以下错误:
Uncaught TypeError: Object #<HTMLInputElement> has no method 'substring'
它报告发生在:
jquery.mobile-1.4.2.js:2656
可在此处找到此图片:
如果有人可以提供帮助,那就太好了,如果有其他人有这个问题,希望这对他们也有帮助。
谢谢,
答案 0 :(得分:1)
我不知道问题是什么,但最新版似乎解决了这个问题:
答案 1 :(得分:0)
我遇到同样的问题(仅限jqm v1.4.2,而不是jqm v1.4.0)。
问题的根源是表单中存在隐藏的输入字段。
在 $ .mobile.path.hashToSelector(hash)中出现问题,这是因为对象(隐藏的输入字段)作为参数传递,然后是子串< / em> function应用于此对象。
以下hack解决了问题(文件jquery.mobile-1.4.2.js,第2654行)
// Escape weird characters in the hash if it is to be used as a selector
hashToSelector: function( hash ) {
/* Hack begin */
if(typeof hash != "string") return hash;
/* Hack end */
var hasHash = ( hash.substring( 0, 1 ) === "#" );
if ( hasHash ) {
hash = hash.substring( 1 );
}
return ( hasHash ? "#" : "" ) + hash.replace( /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g, "\\$1" );
},
但我不知道这个hack是否会在代码的其他地方产生另一个问题(最好不要修改原始的librairy)。
如上所述,jqm的git版本(1.5-pre)解决了问题,你可以在http://jsfiddle.net/4uBqW/5/中看到(比较,这个http://jsfiddle.net/4uBqW/6/是jqm 1.4.2和问题)