-1

这是我的javascript代码(反斜杠用于转义):

<script type="text/javascript">
        $(function(){
            //datepicker
            $(\'#start\').datepicker({
                inline: true
            });
        });
</script>

以及相关的 HTML:

<input type="text" name="start" id="start" class="hasDatepicker" />

它本质上与 jquery 和 jquery ui 附带的示例代码相同。我认为这可能是所有内容都附加到一个名为 $content 的变量中,并在最后回显,而不是简单地成为 HTML。

我很感激这个难题的任何答案。

我也许应该更直观地了解我的代码是如何设置的,而不是在最后解释它。这通常是它的外观:

$content .= '<script type="text/javascript">
        $(function(){
            //datepicker
            $(\'#start\').datepicker({
                inline: true
            });
        });
</script>';

我的 HTML 类似地添加到 $content:

$content .= '<input type="text" name="start" id="start" class="hasDatepicker" />';
4

4 回答 4

6

你试过没有反斜杠吗?

<script type="text/javascript">
        $(function(){
            //datepicker
            $('#start').datepicker({
                inline: true
            });
        });
</script>

真的没有什么好逃避的

和:

您使用 firebug 或任何其他 Web 调试工具吗?

于 2012-05-09T18:01:30.443 回答
5

对更新问题的回应

您的$content变量将输出以下内容:

<script type="text/javascript">
  $(function(){
    //datepicker
    $('#start').datepicker({
      inline: true
    });
  });
</script>

这按原样工作(假设您的页面没有问题):http: //jsbin.com/oxekuw/2/edit

我鼓励您检查您的控制台输出(通常可以通过按 F12 访问)是否有任何关于找不到的消息$或方法。datepicker这表明他们在连接 jQuery 或 jQuery UI 时存在问题。

如果需要,请使用以下内容作为模板。如果您想在那里进行测试,它也可以在线获得:http: //jsbin.com/oxekuw/3/edit

<!DOCTYPE html>
<html>
  <head>
    <title>Datepicker</title>
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel="stylesheet" />
    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.js"></script>
    <script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.19/jquery-ui.js"></script>
    <script type="text/javascript">
      $(function(){
        //datepicker
        $('#start').datepicker({
          inline: true
        });
      });
    </script>
  </head>
  <body>
    <input id="start" type="text" />
  </body>
</html>

对原始问题的回应

当在由单引号封装的字符串中使用单引号时,您会转义。你不会在这里逃脱:

$(\'#start\'); // No-no

检查您的控制台输出,您可能会看到以下内容:SyntaxError: Unexpected token ILLEGAL

不过,您可以在时间和地点对选择器中的字符进行转义。以下是您何时逃脱的示例:

$("input[name=\"foo\"]"); // Little more sensible

注意,双引号内的双引号。我们必须区分我们内部的和外部的,这样我们就不会过早地终止字符串。

更好的解决方案是错开双引号/单引号。如果你在外面使用双引号,在里面使用单引号:

$("input[name='foo']"); // Much easier on the eyes
于 2012-05-09T18:02:41.633 回答
0

正如其他人指出的那样,您的代码应该可以工作。

一个可能导致问题的常见问题是您有多个具有相同 ID ( id="start") 的 HTML 元素。

于 2012-05-10T11:44:53.690 回答
-2

是否可以在创建输入元素之前运行 datepicker() 代码?

于 2012-05-09T18:06:26.703 回答