-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

他の人が指摘したように、コードは機能するはずです。

問題を引き起こす可能性のある一般的な問題の 1 つは、同じ ID ( id="start") を持つ複数の HTML 要素があることです。

于 2012-05-10T11:44:53.690 に答える
-2

入力要素が作成される前に datepicker() コードを実行することは可能ですか?

于 2012-05-09T18:06:26.703 に答える