Javascript 单击jQueryMobile单选按钮时会生成错误
我正在使用jquerymobile1.4.2,单选按钮出现了一些非常恼人的问题。问题是它们不起作用 我浏览了互联网,但没有找到解决办法;所以,也许其他人没有像我一样有这个问题。然而,我确实认为我做的每件事都是“正确的”,所以希望这个问题能够帮助其他人,如果他们也经历过这个问题的话 页面的输出HTML,但用于生成它的代码是:Javascript 单击jQueryMobile单选按钮时会生成错误,javascript,jquery,html,mobile,radio,Javascript,Jquery,Html,Mobile,Radio,我正在使用jquerymobile1.4.2,单选按钮出现了一些非常恼人的问题。问题是它们不起作用 我浏览了互联网,但没有找到解决办法;所以,也许其他人没有像我一样有这个问题。然而,我确实认为我做的每件事都是“正确的”,所以希望这个问题能够帮助其他人,如果他们也经历过这个问题的话 页面的输出HTML,但用于生成它的代码是: <form method="post" action="/category/log"> <input type="hidden" name="id"
<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>
单击单选按钮时,会生成以下错误:
uncaughttypeerror:Object#没有方法“substring”
它报告这种情况发生在:
jquery.mobile-1.4.2.js:2656
可以在此处找到此操作的图像:没有方法“substring”>
如果有人能帮上忙那就太好了,如果还有其他人有这个问题,希望这也能帮助他们
谢谢,我不知道是什么问题,但最新版本似乎可以解决它: 我也有同样的问题(仅适用于jqm v1.4.2,不适用于jqm v1.4.0) 问题的根源是表单中存在隐藏的输入字段 问题发生在$.mobile.path.hashToSelector(哈希)中,原因是对象(隐藏的输入字段)作为参数传递,然后子字符串函数应用于该对象 下面的hack解决了这个问题(文件jquery.mobile-1.4.2.js,第2654行)
//如果要用作选择器,则对哈希中的奇怪字符进行转义
hashToSelector:函数(哈希){
/*黑客开始*/
if(typeof hash!=“string”)返回hash;
/*劈端*/
var hasHash=(hash.substring(0,1)=“#”);
if(hasHash){
hash=hash.substring(1);
}
return(hasHash?#“:”)+hash.replace(/([!“#$%”和“()*+,./:;?@[\]^`{124;}~])/g,“\\$1”);
},
但我不知道这种黑客行为是否会在代码的其他地方产生另一个问题(最好不要修改原始库)
如上所述,jqm的git版本(1.5-pre)解决了您在中看到的问题(与jqm 1.4.2相比,这就是问题所在)
// 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" );
},