Stop reloading page with 'Enter Key'

2019-01-22 17:49发布

I have a search box at the top of page that makes an ajax call when a user hits the adjacent button. I am trying to update the input tag so that when a user hit the 'enter' key, the apropriate JavaScript takes place without reloading the page. The problem is that the page keeps reloading. Here is my latest attempt:

$("searchText").bind('keyup', function(event){ 
  if(event.keyCode == 13){ 
    event.preventDefault();
    $("#buttonSrch").click(); 
    return false;
  }
});

<input type='search' id='searchText' />
<input type='button' id='buttonSrch' onclick="search(document.getElementById('searchText'))" value='Search' />

9条回答
叼着烟拽天下
2楼-- · 2019-01-22 18:04

This is what ended up working for me. Please note that my struggle was to find the object that triggered the form submit:

$('#missingStaff').submit(function (e) {
e.preventDefault();
var comment = $(document.activeElement)[0];
submitComments(comment);

});

查看更多
Evening l夕情丶
3楼-- · 2019-01-22 18:07

You could set the form action attribute to javascript:void(0); that way the form doesn't post/get so the page wont refresh.

$(document).ready(function () {
  $('#form1').attr('action', 'javascript:void(0);');
});
查看更多
\"骚年 ilove
4楼-- · 2019-01-22 18:09

I know its a little late but I ran into the same problem as you. It worked for me using "keypress" instead of bind.

$('#searchText').keypress(function (e) {                                       
       if (e.which == 13) {
            e.preventDefault();
            //do something   
       }
});
查看更多
在下西门庆
5楼-- · 2019-01-22 18:11
 $('#seachForm').submit(function(e){
      e.preventDefault();
      //do something
 });
查看更多
劳资没心,怎么记你
6楼-- · 2019-01-22 18:12

You are missing # in the selector. Try this

<input type='text' id='searchText' />

JS

$("#searchText").bind('keyup', function(event){ 
  if(event.keyCode == 13){ 
    event.preventDefault();
    //$("#buttonSrch").click(); 
    search(this.value);
  }
});
查看更多
地球回转人心会变
7楼-- · 2019-01-22 18:12

Don't bind to the inputs; bind to the form. Assuming the form has an ID of searchForm:

$("#searchForm").submit(function() {
    search($("#searchText").get(0));
    return false;
});

Try it out.

It can also be done with plain JavaScript:

document.getElementById('searchForm').addEventListener('submit', function(e) {
    search(document.getElementById('searchText'));
    e.preventDefault();
}, false);
查看更多
登录 后发表回答