Detect enter in input elements of a certain class

前端 未结 3 928
陌清茗
陌清茗 2021-02-19 19:57

I need to detect when someone hits \"enter\" in text inputs with a specific class.

My jQuery is as follows:

$(\'input.large\').keypress(function (e) {
           


        
相关标签:
3条回答
  • 2021-02-19 20:10

    You can use live (.on()) events in document with keydown (I think this is better). It'll allow you detect keydown in current and future elements that matches with a selector.

    HTML:

    <strong>Personal Name</strong>
    <input type='text' class='large' /><br />
    
    <strong>Email</strong>
    <input type='text' class='large' />
    ​
    

    JS (jQuery 1.7+):

    Note: .which, .code, .charCode and .keyCode is now deprecated. Use the following new solution:

    jQuery(document).on('keydown', 'input.large', function(ev) {
        if(ev.key === 'Enter') {
            // Will change backgroundColor to blue as example
            this.style.backgroundColor = '#EFF';
    
            // Avoid form submit
            return false;
        }
    });
    

    jsFiddle: http://jsfiddle.net/david_proweb/fjgvhubn/2/

    0 讨论(0)
  • 2021-02-19 20:17

    Thanks David Rodrigues for your explanation. It helped a lot. I had to upgrade my JQuery library and the .live() function stopped to work properly.

    You can use it to the following

    Select all check box inputs of a form when click on select_all_checkboxes input type checkbox:

    jQuery(document).on("click", "#select_all_checkboxes", function(){
        var chk = this.checked;
        $('input[id=selectAll]').each(function(){
            this.checked = chk;
        });
    });
    

    Call a function "checkMail" when the user left the field using tab ou clicking of the any field that has a class name "email":

    jQuery(document).on("blur", 'input.email', function(event){
        var email = $(this).val();
        if (!checkMail(email)) {
            alert("Invalid email.");
            $(this).focus();
        }
    });
    
    0 讨论(0)
  • 2021-02-19 20:18

    check this one: http://jsfiddle.net/EJyyr/

    used this html:

    <tr><td> Personal Name </td></tr>
    <tr><td> <input type='text' class='large' id='a'> </td></tr>
    
    <tr><td> Email</td></tr>
    <tr><td> <input type='text' class='large' id='b'> </td></tr>
    

    and this is the jQuery which logs the input text id

    $('.large').keypress(function (e) {
       if(e.which ==13)
        console.log($(this).attr('id'));
    });
    
    0 讨论(0)
提交回复
热议问题