Trigger a button click with JavaScript on the Enter key in a text box

后端 未结 30 1962
难免孤独
难免孤独 2020-11-21 23:53

I have one text input and one button (see below). How can I use JavaScript to trigger the button\'s click event when the Enter key is pressed ins

相关标签:
30条回答
  • 2020-11-22 00:29

    Since no one has used addEventListener yet, here is my version. Given the elements:

    <input type = "text" id = "txt" />
    <input type = "button" id = "go" />
    

    I would use the following:

    var go = document.getElementById("go");
    var txt = document.getElementById("txt");
    
    txt.addEventListener("keypress", function(event) {
        event.preventDefault();
        if (event.keyCode == 13)
            go.click();
    });
    

    This allows you to change the event type and action separately while keeping the HTML clean.

    Note that it's probably worthwhile to make sure this is outside of a <form> because when I enclosed these elements in them pressing Enter submitted the form and reloaded the page. Took me a few blinks to discover.

    Addendum: Thanks to a comment by @ruffin, I've added the missing event handler and a preventDefault to allow this code to (presumably) work inside a form as well. (I will get around to testing this, at which point I will remove the bracketed content.)

    0 讨论(0)
  • 2020-11-22 00:30

    Then just code it in!

    <input type = "text"
           id = "txtSearch" 
           onkeydown = "if (event.keyCode == 13)
                            document.getElementById('btnSearch').click()"    
    />
    
    <input type = "button"
           id = "btnSearch"
           value = "Search"
           onclick = "doSomething();"
    />
    
    0 讨论(0)
  • 2020-11-22 00:31

    To do it with jQuery:

    $("#txtSearch").on("keyup", function (event) {
        if (event.keyCode==13) {
            $("#btnSearch").get(0).click();
        }
    });
    

    To do it with normal JavaScript:

    document.getElementById("txtSearch").addEventListener("keyup", function (event) {
        if (event.keyCode==13) { 
            document.getElementById("#btnSearch").click();
        }
    });
    
    0 讨论(0)
  • 2020-11-22 00:35

    This also might help, a small JavaScript function, which works fine:

    <script type="text/javascript">
    function blank(a) { if(a.value == a.defaultValue) a.value = ""; }
    
    function unblank(a) { if(a.value == "") a.value = a.defaultValue; }
    </script> 
    <input type="text" value="email goes here" onfocus="blank(this)" onblur="unblank(this)" />
    

    I know this question is solved, but I just found something, which can be helpful for others.

    0 讨论(0)
  • 2020-11-22 00:36

    In jQuery, the following would work:

    $("#id_of_textbox").keyup(function(event) {
        if (event.keyCode === 13) {
            $("#id_of_button").click();
        }
    });
    

    $("#pw").keyup(function(event) {
        if (event.keyCode === 13) {
            $("#myButton").click();
        }
    });
    
    $("#myButton").click(function() {
      alert("Button code executed.");
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    Username:<input id="username" type="text"><br>
    Password:&nbsp;<input id="pw" type="password"><br>
    <button id="myButton">Submit</button>

    Or in plain JavaScript, the following would work:

    document.getElementById("id_of_textbox")
        .addEventListener("keyup", function(event) {
        event.preventDefault();
        if (event.keyCode === 13) {
            document.getElementById("id_of_button").click();
        }
    });
    

    document.getElementById("pw")
        .addEventListener("keyup", function(event) {
        event.preventDefault();
        if (event.keyCode === 13) {
            document.getElementById("myButton").click();
        }
    });
    
    function buttonCode()
    {
      alert("Button code executed.");
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    Username:<input id="username" type="text"><br>
    Password:&nbsp;<input id="pw" type="password"><br>
    <button id="myButton" onclick="buttonCode()">Submit</button>

    0 讨论(0)
  • 2020-11-22 00:36

    In plain JavaScript,

    if (document.layers) {
      document.captureEvents(Event.KEYDOWN);
    }
    
    document.onkeydown = function (evt) {
      var keyCode = evt ? (evt.which ? evt.which : evt.keyCode) : event.keyCode;
      if (keyCode == 13) {
        // For Enter.
        // Your function here.
      }
      if (keyCode == 27) {
        // For Escape.
        // Your function here.
      } else {
        return true;
      }
    };
    

    I noticed that the reply is given in jQuery only, so I thought of giving something in plain JavaScript as well.

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