单击jQueryMobile单选按钮会产生错误

时间:2014-04-07 09:28:50

标签: javascript jquery html mobile radio

我正在使用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

可在此处找到此图片:Object #<HTMLInputElement> has no method 'substring'

如果有人可以提供帮助,那就太好了,如果有其他人有这个问题,希望这对他们也有帮助。

谢谢,

2 个答案:

答案 0 :(得分:1)

我不知道问题是什么,但最新版似乎解决了这个问题:

http://code.jquery.com/mobile/git/jquery.mobile-git.js

答案 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和问题)