代码之家  ›  专栏  ›  技术社区  ›  Siva Ganesh

jQuery OnDropDownShown中未定义的键代码警报。我不知道我在哪里犯了错误

  •  1
  • Siva Ganesh  · 技术社区  · 8 年前

    我的密码一直在报警 undefined . 如果我犯了什么错误,请告诉我

     $('.newmultiselect').multiselect({
          enableFiltering: true,
          filterPlaceholder: 'Search',
          enableCaseInsensitiveFiltering : true,
          includeSelectAllOption: false,
          onChange: function(element, checked) {
            var selectID = $(element).parent().attr('id');
            $("#"+selectID).valid();
          },    
          onDropdownShown : function(event) {
            $('.newmultiselect').parent().find(".multiselect-search").on('keyup', function(){ 
                 if (event.keyCode == 9 || event.keyCode == 13) {
                    alert('0000');
                 } 
                alert(event.keyCode);
                $('.multiselect-filter-hidden').focus();
            });
          }
      });
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   Rory McCrossan Hsm Sharique Hasan    8 年前

    问题是因为您已在外部 onDropdownShown 事件处理程序而不是内部 keyup 事件处理程序,您实际上打算在其中使用它。

    还要注意,嵌套事件处理程序不是一个好主意,因为每次外部处理程序执行时都要复制内部处理程序。要解决此问题,请更改 弹起 使用委托模式的处理程序。试试这个:

    $('.newmultiselect').multiselect({
      enableFiltering: true,
      filterPlaceholder: 'Search',
      enableCaseInsensitiveFiltering: true,
      includeSelectAllOption: false,
      onChange: function(element, checked) {
        var selectID = $(element).parent().attr('id');
        $("#" + selectID).valid();
      }
    });
    
    $(document).on('keyup', ".multiselect-search", function(e) {
      if (e.keyCode == 9 || e.keyCode == 13) {
        alert('0000');
      }
      alert(event.keyCode);
      $('.multiselect-filter-hidden').focus();
    });
    
        2
  •  1
  •   Krzysztof Janiszewski    8 年前

    因为你用 event 变量 onDropdownShown 回拨。

    你应该使用 事件 变量输入 keyup 改为事件

    onDropdownShown : function() {
      $('.newmultiselect').parent().find(".multiselect-search").on('keyup', function(event) { 
           if (event.keyCode == 9 || event.keyCode == 13) {
              alert('0000');
           } 
          alert(event.keyCode);
          $('.multiselect-filter-hidden').focus();
      });
    }