使用“Enter Key”停止重新加载页面

时间:2012-01-14 22:54:17

标签: javascript jquery input

我在页面顶部有一个搜索框,当用户点击相邻按钮时会发出ajax调用。我正在尝试更新输入标记,以便当用户点击'enter'键时,适当的JavaScript将发生而不会重新加载页面。问题是页面不断重新加载。这是我最近的尝试:

$("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' />

11 个答案:

答案 0 :(得分:28)

不要绑定到input;绑定到form。假设form的ID为searchForm

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

<强> Try it out.

也可以使用纯JavaScript:

document.getElementById('searchForm').addEventListener('submit', function(e) {
    search(document.getElementById('searchText'));
    e.preventDefault();
}, false);

答案 1 :(得分:16)

您在选择器中缺少#。试试这个

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

JS

$("#searchText").bind('keyup', function(event){ 
  if(event.keyCode == 13){ 
    event.preventDefault();
    //$("#buttonSrch").click(); 
    search(this.value);
  }
});

答案 2 :(得分:12)

我知道它有点晚了,但我遇到了和你一样的问题。它对我使用“keypress”而不是bind。

$('#searchText').keypress(function (e) {                                       
       if (e.which == 13) {
            e.preventDefault();
            //do something   
       }
});

答案 3 :(得分:8)

在表单标记

上添加onSubmit="return false;"
<form onSubmit="return false;">
/* form elements here */
</form>`

答案 4 :(得分:5)

 $('#seachForm').submit(function(e){
      e.preventDefault();
      //do something
 });

答案 5 :(得分:3)

您可以将表单操作属性设置为javascript:void(0);这样,表单不会发布/获取,因此页面不会刷新。

$(document).ready(function () {
  $('#form1').attr('action', 'javascript:void(0);');
});

答案 6 :(得分:1)

只需使用<form>标记中的“操作”属性即可。 喜欢这个

<form action="#">   // your content     </form>

答案 7 :(得分:0)

您的JS是立即执行还是文档准备就绪?如果它不在准备好的文档中,则在您尝试呼叫bind时该按钮将不存在。

答案 8 :(得分:0)

这最终为我工作。请注意,我的斗争是找到触发表单提交的对象:

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

});

答案 9 :(得分:0)

$("searchText").keypress(function(event){ 
  if(event.keyCode == 13){ 
    $("#buttonSrch").click(); 
    return false;
  }
});

答案 10 :(得分:0)

你只需要添加这个:

<form @submit.prevent="search">

为搜索触发的任何函数。当我按下那个搜索按钮 search() func 被触发。这就是为什么:@submit.prevent="search"

async search() {
  let yuyu = document.getElementById('search').value
  console.log('lsd', yuyu)
  try {
    let newRecipes = await this.$axios.$get(
      `/api/videosset/?user=&id=&title=${yuyu}&price=&category=`
    )
    this.$store.commit('CHANGE_NAV_LAYOUT', newRecipes)
  } catch (e) {
    console.log(e)
  }
},