2

私は奇妙な問題を抱えています。Jquery 1.7.2 のサポートを追加すると、フォームのテキストエリアに改行を追加できません。クリックして入力しても何も起こりません。

jquery でソースコードをいじってみたところ、次のコードをコメントアウトすると (4845 行目)

for ( var type in Expr.match ) {
    Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
    Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
}

改行を追加する機能が復元されました。この問題を抱えている人は他にいないので、何か他のことが起こっていると推測しています。ただし、私の質問は次のとおりです。上記のコードの目的は何ですか (私はあまり JavaScript に精通していません)、それを削除するとリスクが生じますか? コードを削除してテキストエリアの改行機能を復元したいのですが、無意識のうちにサイトを中断したくありません。これを行った後、js コンソールにエラーが表示されることに気付きました。

Uncaught TypeError: Cannot call method 'exec' of undefined -- jquery.js:4185

どんな助けでも大歓迎です!


ここにいくつかのコードサンプルがあります。html:

    <form class="form-input" method="post">
  <fieldset>
    <ol>
      <li>
          <label for="activity_type_id">Activity Type&nbsp;<em>*</em></label>
          <select name="activity_type_id"><option value="17" label="Call">Call</option><option value="23" label="Connectivity Meeting">Connectivity Meeting</option><option value="22" label="Conversation">Conversation</option><option value="16" label="Email (incoming)">Email (incoming)</option><option value="15" label="Email (outgoing)">Email (outgoing)</option><option value="19" label="Implementation Notes">Implementation Notes</option><option value="20" label="Meeting Minutes">Meeting Minutes</option><option value="18" label="Task">Task</option><option value="21" label="Tip / Unusual Attribute">Tip / Unusual Attribute</option></select>      </li>    
      <li>
          <label for="summary">Summary&nbsp;<em>*</em></label>
          <input size="40" maxlength="80" id="summary" name="summary" value=""/>
      </li>   
      <li>
          <label for="details">Details&nbsp;</label>
          <textarea class="wide" name="details" id="details" rows="10" columns="80"></textarea>
      </li>
          </ol>
  </fieldset>
  <input id="submit" name="addactivity" value="Add Activity" type="submit" />
  </form>

そして、他のプラグインに含まれていない JavaScript:

<script>
// Dynamic lookup of C2 companies
$(document).ready(function ()
{
  $(window).keydown(function(event)
  {
    if(event.keyCode == 13) 
    {
      event.preventDefault();
      return false;
    }
  });
  $("#search_input").autocomplete(
  {
    source: function(request,response)
    {
      $("#loading-search").show();
      $("#no-results").hide();
      $.getJSON("/services/json/cust_search.php",request,function(data) 
      {
        response(data);
        $("#loading-search").hide();
        if (data.length == 0)
        {
          $("#no-results").show();
        } else
        {
          $("#no-results").hide();
        }
      });
    },                                              
    minLength: 3,
    select: function(event,ui)
    {
      $("#search_input").hide();
      $("#search_input").val(ui.item.value);
      $("#search_source").val(ui.item.source);
      $("#search-form").submit();
    } 
  });
});
</script> 
<script type="text/javascript">
//---------------------------------------------------------------------------
//  Hide all the submenus on start.  When a non-expanded menu is clicked,
//  expand that menu while collapsing the menu above it.  If a menu is 
//  clicked when its expanded, collapse.
//---------------------------------------------------------------------------
$(function() 
{
//  $("dd:not(:first)").hide();
  $("dd").hide();
  $("#menu-nexmark").slideDown("fast");
  $("dt a").click(function() 
  {
    var curr_dd = $(this).parent().next();
     if (curr_dd.css("display") != "none")
    {
      $("dd:visible").slideUp("medium");
      return;
    }
    $("dd:visible").slideUp("slow");
    curr_dd.slideDown("slow");
    return false;
  });
});
</script>
4

1 に答える 1

2

問題はこのコードでした:

$(window).keydown(function(event)
  {
    if(event.keyCode == 13) 
    {
      event.preventDefault();
      return false;
    }
  });

影響を受けた div (Enter をクリックする機能を無効にしたかったオートコンプリート検索メニュー) のみを参照するように設定すると、他のすべての場所で改行機能が復元されました。

$("#somediv").keydown(function(event)
  {
    if(event.keyCode == 13) 
    {
      event.preventDefault();
      return false;
    }
  });
于 2012-06-13T18:03:45.340 に答える