Clicking a link when enter key is pressed using jQuery

后端 未结 7 1781
无人及你
无人及你 2021-02-19 22:58

I\'m trying to make it so when a user is in a text box and they press enter, it is the same as clicking the link, in which case it should take them to another page. Here\'s what

相关标签:
7条回答
  • 2021-02-19 23:22

    I had a very similar question. However, I was unable to find a complete solution.

    I simply wanted to attach the same function to 2 different elements, with 2 different methods of executing it. For example, what Tom wanted: CLICK a link, OR press ENTER in an input field, and execute the same function (ie navigate to another page).

    Jacob Relkin has presented a good idea for the "enter" keypress. I have included this in the code below:

    So based on the following simple markup:

    <div>
      <label for="myInput">Type Stuff</label>
      <input id="myInput" type="text" value="" />
      <a id="myButton" href="http://google.com">Click me!</a>
    </div>
    

    Use this JavaScript (JQuery) code:

    //this is the plugin Jacob Relkin suggested
    (function($) {
    $.fn.enter=function(callback){
        this.keyup(function(e) {
            var ev = e || event;
            if(ev.keyCode == 13) {
                callback();
                return false;
            }
        }); 
    };
    })(jQuery);
    
    $(document).ready(function(){
    
        var fnDoStuff = function() {
            //insert code here
            //for this example I will complete Tom's task
            document.location.href = $("#myButton").attr('href');
        };
    
        $('#myInput').enter(fnDoStuff);
        $('#myButton').click(fnDoStuff);
    
     });
    

    In this way, you could attach the same function to any number of elements, with any type of interaction.

    0 讨论(0)
  • 2021-02-19 23:23

    Write a small jQuery plugin:

    jQuery.fn.enter = function(callback) {
       if(!callback) {
          //don't attach if we have garbage.
          return;
       }
    
       $(this).keydown(function(e) {
           var ev = e || event;
           if(ev.keyCode == 13) {
              callback();
              return false;
           }
       }); 
    };
    

    Usage: $(element).enter(callback_func);

    I hope this helps.

    0 讨论(0)
  • 2021-02-19 23:23

    You have a few major problems with this code...

    The first one, pygorex1 caught: you need to specify the event argument if you wish to refer to it...

    The second one is in the same area of your code: you're trying to check for the key event in a handler for the click event!

    The third one can be found on this line:

                //click the button and go to next page
                $("#button1").click();
    

    ...which does nothing, since you have no event handlers on that link, and jQuery's click() function does not trigger the browser's default behavior!

    Instead, try something like this:

    // if a key is pressed and then released
    $("#drivingSchoolInput").live("keyup", function(e) {
    
      // ...and it was the enter key...
      if(e.keyCode == 13) {
    
        // ...navigate to the associated URL.
        document.location = $("#button1").attr('href');
      }               
    });
    
    0 讨论(0)
  • 2021-02-19 23:29

    I wanted to do something similar, so after reading David K Egghead's suggestion above I came up with this which triggers a "click" even on an anchor when enter is pressed. Could be used to "click" a button as well!

    $(document).keypress(function(event){if(event.keyCode==13){$('.save_icon').trigger("click");}});
    
    0 讨论(0)
  • 2021-02-19 23:32

    This line needs the e:

    $("#drivingSchoolInput").live("click", function(e) {
    
    0 讨论(0)
  • 2021-02-19 23:36

    Check this out: jQuery Event Keypress: Which key was pressed?

    I'll just consolidate the codes from that post here:

    $('#searchbox input').bind('keypress', function(e) {
     var code = e.keyCode || e.which;
     if(code == 13) { //Enter keycode
       //Do your stuff + form submit
     }
    });
    

    PS: I have never tested it, but it 'should' work. :P

    0 讨论(0)
提交回复
热议问题