Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在文本框值更改而不是键控事件上触发函数_Javascript_Ajax_Jquery - Fatal编程技术网

Javascript 在文本框值更改而不是键控事件上触发函数

Javascript 在文本框值更改而不是键控事件上触发函数,javascript,ajax,jquery,Javascript,Ajax,Jquery,下面的代码当前仅在keyup事件发生时生成搜索查询。在我开始使用webkit之前,这不是一个问题,现在可以不按任何键(通过单击搜索字段中的“x”)清除搜索字段 当搜索框中出现更改时,是否可以启动相同的功能 我曾尝试用.change替换.keyup,但当搜索框中发生更改时,似乎不会产生任何响应 $('#search').keyup(function(e){ e.preventDefault(); search = $(this).val(); $.ajax({ url: '/l

下面的代码当前仅在keyup事件发生时生成搜索查询。在我开始使用webkit之前,这不是一个问题,现在可以不按任何键(通过单击搜索字段中的“x”)清除搜索字段

当搜索框中出现更改时,是否可以启动相同的功能

我曾尝试用.change替换.keyup,但当搜索框中发生更改时,似乎不会产生任何响应

$('#search').keyup(function(e){
  e.preventDefault();
  search = $(this).val();
  $.ajax({
    url: '/lists.xml?search='+search,
    dataType: "xml",
    success: parseXML
  });
}); 
任何帮助都将不胜感激

编辑:经过进一步的研究,我发现了这个

以下代码与上述代码结合使用:

$('#search').click(function(e){
  if($(this).val()==""){
  e.preventDefault();
  search = $(this).val();

  $.ajax({
    url: '/lists.xml?search='+search,
    dataType: "xml",
    success: parseXML
  });
  }
});  

据我所知,更改、模糊和聚焦事件只有在您将焦点从文本框移开时才会发生。然后他们只检查前一个值是否与原始值相同

因此,如果上一个值为“”,并且键入“asdf”,然后从文本框中单击以失去焦点,则函数将启动。所以现在的值是“asdf”。如果键入“asdfeee”,则删除“eee”并将焦点移开,事件将不会触发,因为该值仍将等于“asdf”


我认为这里最简单的解决方案是离开keyup事件处理程序,简单地添加一个click事件处理程序,该处理程序执行与WebKit行为完全相同的操作。

经过进一步研究,我找到了解决我自己问题的方法。为了说明webkit的功能,我添加了两个事件处理程序,如下所示。这不是一个完美的解决方案,但现在就可以了

$('#search').keyup(function(e){
  e.preventDefault();
  search = $(this).val();
  $.ajax({
    url: '/lists.xml?search='+search,
    dataType: "xml",
    success: parseXML
  });
}); 

$('#search').click(function(e){
  if($(this).val()==""){
  e.preventDefault();
  search = $(this).val();

  $.ajax({
    url: '/lists.xml?search='+search,
    dataType: "xml",
    success: parseXML
  });
  }
});  

这有助于得出解决方案。

您的事件是为
键控启动的
,您可以使用
聚焦
模糊
@shyvy88如果不起作用,请评论,我将进一步尝试。我已向搜索字段添加了一个单击事件,但每次单击该字段时都会启动搜索。我添加了一个if语句,仅当字段被清除时才触发搜索,这就是单击webkit“x”时发生的情况。在编辑代码的原始问题中还发现了我的编辑。
$('#search').keyup(function(e){
  e.preventDefault();
  search = $(this).val();
  $.ajax({
    url: '/lists.xml?search='+search,
    dataType: "xml",
    success: parseXML
  });
}); 

$('#search').click(function(e){
  if($(this).val()==""){
  e.preventDefault();
  search = $(this).val();

  $.ajax({
    url: '/lists.xml?search='+search,
    dataType: "xml",
    success: parseXML
  });
  }
});