jQuery Mobile SimpleDialog:“Uncaught SyntaxError:Unexpected token}”

时间:2012-04-23 21:04:57

标签: jquery-plugins jquery-mobile

我目前正在为jQuery Mobile实现一个blankContent SimpleDialog。 这是html:

<li>
   <a href="#page1" id="searchdialog" data-theme="" data-icon="search">Search Routes
   </a>
</li>

这是jQuery:

<script type="text/javascript">
        $(document).delegate('#searchdialog', 'click', function() {
          $('<div>').simpledialog2({
            mode: 'blank',
            headerText: 'Route Search',
            headerClose: true,
            blankContent : 
            '<div id="content" data-role="content"><label>Enter Your Search:</label><div data-role="fieldcontain"><fieldset data-role="controlgroup">' +
            '<label for="textinput7">Start</label><input id="start" placeholder="" value="" type="text"/></fieldset></div>'+
            '<div data-role="fieldcontain"><fieldset data-role="controlgroup"><label for="textinput9">End</label>'+
            '<input id="end" placeholder="" value="" type="text" /></fieldset></div>'+
            '<a data-role="button" data-transition="fade" data-theme="b" href="#page6" data-icon="search" data-iconpos="left" onclick="alert($("#start").val(),$("#end").val())">Search</a>'
          })
        });
    </script>

我不能为我的生活找出造成这个错误的原因:

  

未捕获的SyntaxError:意外的令牌}

只有在单击“搜索路径”链接时才会出现错误,这导致我认为它是jquery中的错误。有趣的是,如果我做到了

  

的onclick = “警报()”

而不是

  

的onclick = “警报($(” #开始 “)。VAL(),$(” #结束 “)。VAL())”

然后它可以工作,但我需要有另一个的变量:

  

onclick =“location.href =”/ search /?start =“+ $(”#start“)。val()+”&amp; end =“+ $(”#end“)。val()”

关于如何实现这一目标的想法?任何快速而肮脏的解决方案都可行感谢

1 个答案:

答案 0 :(得分:2)

你的行:

'onclick="alert($("#start").val(),$("#end").val())"'

导致错误。你的onclick属性中有引号冲突(和非字符串逗号!)

你最好创建一个隐藏/显示:无元素w /其中的硬编码信息,然后简单地引用它。

或者指定处理程序@创建html的时间(类似于已经委派的处理程序)

编辑:基本上采取这个:

'<a data-role="button" data-transition="fade" data-theme="b" href="#page6" data-icon="search" data-iconpos="left" onclick="alert($("#start").val(),$("#end").val())">Search</a>'

而是这样做:

'<a class="some-wonky-alert" data-role="button" data-transition="fade" data-theme="b" href="#page6" data-icon="search" data-iconpos="left" >Search</a>'

$('a .some-wonky-alert').on('click', function()
{
alert($("#start").val() + $("#end").val());
});

作为委派的季节@您的便利

edit2:当然你可以尝试逃避引号 - 虽然这可能有用 - 但它不能解决所涉及的不良做法:)