Javascript $(';form:not(.some类)';)。keydown仍将keydown事件应用于.some类

Javascript $(';form:not(.some类)';)。keydown仍将keydown事件应用于.some类,javascript,jquery,html,Javascript,Jquery,Html,JQuery的“:not”选择器没有阻止预期被排除的类(装饰元素)触发.keydown事件。为什么? 从下面的代码中,当我在.newOwnerEntryInput字段中按下一个键时,我希望只看到“1”的警报。但我同时看到警报“1”和“2” Javascript: $('.newOwnerEntryInput').keydown(function (event) { alert('1'); }); // Prevent Enter from submitting form. $('for

JQuery的“:not”选择器没有阻止预期被排除的类(装饰元素)触发.keydown事件。为什么?

从下面的代码中,当我在.newOwnerEntryInput字段中按下一个键时,我希望只看到“1”的警报。但我同时看到警报“1”和“2”

Javascript:

$('.newOwnerEntryInput').keydown(function (event) {
    alert('1');
});

// Prevent Enter from submitting form.
$('form:not(.newOwnerEntryInput)').keydown(function (event) {
            alert('2');
});
HTML:

  • @DropDownList(“cftMemberID”,null,String.Empty,new{@class=“actionOwnerDropDown hidden”})
  • 我已经尝试了各种引号样式,使用引号和不使用引号围绕被排除的类,以及在类之后添加“input”,如$(“form:not(.newOwnerEntryInput input)”)

    谢谢

    试试这个:

    $('form input:not(.newOwnerEntryInput)').on('keydown',function (event) 
    {
          alert('2');
    });
    

    感谢那些帮助过我的人。我确实需要为所有类型的输入字段触发表单,而不仅仅是输入类型的字段。所以这是不可能的

    以下是解决我问题的方法:

    $('form').keydown(function (event) {
        if (! event.which.hasClass('.newOwnerEntryInput')) {
            alert('2');
        }
    });        
    
    在这种情况下,对于我输入的class.newOwnerEntryInput,如果按下一个键,它将不会触发事件并将“2”推出警报屏幕

    再一次,谢谢,我自己回答这个问题需要几个回答,所有这些回答都有一个解决方案

    试试这个:

    HTML:

    我查看了文档,在他们的示例中,我看到他们的元素
    input
    后面跟着带选择器的函数。
    此处提供了文档:

    我希望这有帮助

    干杯

    表单本身不是
    .newOwnerEntryInput
    ,因此实际上您只是将keydown事件绑定到表单,这会导致两个事件都触发。这是有道理的,但让我重新措辞以确保我理解。由于my不是一个,所以不能用“:not”将其排除在外。这是正确的吗?那么,如何触发所有“form.”按键事件(my.newOwnerEntryInput输入字段中的除外)?将
    form
    替换为
    input
    ,其基本意思是“选择所有没有x类的输入”jQuery选择器就像css选择器一样工作。我现在意识到我应该在整个表单搜索中简单地使用if.hasClass来导出。谢谢大家的评论。为什么不下来?需要解释。
    $('form').keydown(function (event) {
        if (! event.which.hasClass('.newOwnerEntryInput')) {
            alert('2');
        }
    });        
    
    <div>
       <input class="newOwnerEntryInput" type="text"/><br />
       <!-- I know you have MVC dropdown list, but I replaced it with a html textbox (for simple testing) -->
       <input class="newOwnerEntryInput1" type="text"/>
    </div>
    
    $('input.newOwnerEntryInput').keydown(function (e) {
        alert('1');
    });
    
    $('input:not(.newOwnerEntryInput)').keydown(function (e) {
        alert('2');
    });