我试图在用户输入而没有页面加载的情况下调用ajax(),但是当用户在输入框中输入时,它会调用此ajax方法。我的输入框如下:
<input type="text" name="search" id="txt_name" placeholder="Keyword"/>
Jquery./ Ajax代码;
$(document).ready(function(){
$("#txt_name").keyup(function(){
var value = $('#txt_name').val();
$.ajax({
type:"post",
url:"doSearchEnter.php",
data :{
'key' : value
},
success:function(res){
$('#showSearchResult').html(res);
}
});
});
});
用户在没有页面加载的情况下进入输入框后如何调用此ajax()?
更新:
$('#txt_name').on('click', 'submit', function(e) {
e.preventDefault();
$.ajax({
type:"post",
url:"doSearchEnter.php",
data :{
'key' : value
},
success:function(res){
$('#showSearchResult').html(res);
}
});
});
更新2:
<form>
<input type="button" name="given_name" value="Given Name" class="search_submit" id="given_name"/>
<input type="button" name="company_name" value="Company Name" class="search_submit" id="company_name"/>
<input type="button" name="cdid" value="ID" class="search_submit" id="cdid"/>
<input type="text" name="search" id="txt_name" placeholder="Keyword"/>
</form>
$('form').on('click', 'submit', function(e){
e.preventDefault();
});
$('form').on('keyup', '#txt_name', function(e){
if(e.keyCode == '13'){
$.ajax({
type:"post",
url:"doSearchEnter.php",
data :{
'key' : value
},
success:function(res){
$('#showSearchResult').html(res);
}
});
}
});
答案 0 :(得分:3)
你的问题有点不清楚,但我想你想在用户按下输入框上的回车键时执行ajax?如果是这样,您可以检查键盘处理程序中按下的键,并检查它是否是回车键。
$("#txt_name").keyup(function(event){
if (event.keyCode == '13') {
//...
}
});
答案 1 :(得分:1)
使用提交按钮将输入放在表单内应该可以解决问题。当用户按下输入表单时应该提交。您所要做的就是使用
$('form').on('click', 'submit', function(e) {
e.preventDefault();
$.ajax({
//do your Ajax thing here
});
});
更新: 对于三种形式,您将对所有三种形式使用相同的Ajax调用,并将数据放在一起。
var formData = $(this).closest('form').serialize();
$.ajax({
type: 'POST',
url: 'test.php',
data: formData
});
这会告诉jquery将表单数据放入适当的格式以传递到服务器端脚本,并适用于所有三个脚本
UPDATE2: 基于更新问题的更新:
$('form').on('submit', function(e){
e.preventDefault();
});
$('form').on('keyup', '#txt_name', function(e){
if(e.keyCode == '13'){
$.ajax({
//do Ajax stuff
});
}
});
这里是工作代码的链接! jsfiddle
答案 2 :(得分:0)
不要使用keyup(),而是使用blur()。
答案 3 :(得分:0)
将当前的匿名函数更改为在不同情况下(即不同事件)运行,例如focusout()
或blur()
$(document).ready(function(){
$("#txt_name").on("blur",function(){
var value = this.value;
$.ajax({
type:"post",
url:"doSearchEnter.php",
data :{
'key' : value
},
success:function(res){
$('#showSearchResult').html(res);
}
});
});
});