当前位置: 首页 > 知识库问答 >
问题:

在从datalist中选择项时触发事件,而不是在键入时触发事件

韦宣
2023-03-14
<input list='data-list' id='list'>
<datalist id='data-list'>
  <option>first</option>
  <option>second</option>
</datalist>

用户可以从datalist或can类型中选择一个项目,输入它自己的值。我通过JSON调用PHP脚本连接到数据库,以填充表单其余部分的其他信息。我希望当用户在列表输入中键入名称时(因此当内容模糊时),或者当用户单击DataList中的某个选项时,这会触发。

使用$(':input#list').on('change',function...当输入失去焦点时会触发该函数,但当从数据列表中选择一项时,它也会等待“直到输入失去焦点,我希望事件立即触发”

使用$(':input#list').on('input',function...单击datalist中的一个项会立即触发函数,这正是我想要的,但是键入也会触发事件,每次击键都会向PHP脚本发送大量不必要的请求。

我尝试将事件直接绑定到datalist上,但没有成功。

我期待触发功能时,用户点击(或使用键盘选择)一个项目从datalist或当用户输入一个词,并移动到下一个输入。

共有1个答案

南门魁
2023-03-14

我选择的解决方案是两个事件的结合...

我跟踪变量window.latest_autofill_qeury,以防止连续两次加载相同的内容。我有以下onchange函数,当用户将焦点从输入中移出(制表符移出或单击其他位置)时,此函数会触发

$( ':input#list' ).on( 'change', function(){
   var current = $( this ).val();
   if( window.latest_autofill_query != current )
      load_autofill();
} );

然后还有另一个函数跟踪用户输入的内容,并检查输入的值是否在DataList中。如果是这样,我们假设这是用户想要的,然后查询下一个datalist。当用户单击datalist中的项时,也会触发此操作,这将始终导致输入值出现在datalist中,从而立即触发LOAD_AUTOFILL:

$( ':input#list' ).on( 'input', function(){
   var current = $( this ).val();
   $( 'datalist#data-list option' ).each( function(){
      if( $( this ).text() == current ){
         load_autofill();
         return false;     //* break out of jQuery each loop
   } );
} );
function load_autofill(){
    var current = $( ':input#list' ).val();
    window.latest_autofill_query = current;

    //* ... perform loading of the next datalist
}
 类似资料:
  • 问题内容: 我的整个项目都使用(Bluebird)Promises,但是有一个使用EventEmitter的特定库。 我想要实现以下目标: 我在Promises链中读了EventEmitter的答案。这给了我一种执行’connect’事件的回调的方法。这是我到目前为止所到之处 现在如何进一步链接“ eventB”? 问题答案: 我假设您想为每个事件做不同的事情。即使由的动作触发,您也可以将其视为另

  • 我的JavaFx FXML应用程序有问题。 当我在表单上选中复选框时,我想根据单击的复选框执行一个方法。是否有任何方法可以将复选框的名称传递给该方法,以便对其执行一些有条件的工作? 我有两个复选框,只能选择一个。当我单击其中一个时,应取消选择另一个,反之亦然。显然,下面的代码将无法工作,因此我希望传递被单击对象的名称。 任何帮助都将不胜感激,非常感谢。

  • 问题内容: 所以我有两个这样的桌子… 我正在尝试创建一个触发器,该触发器将: 更新时被更新。 为了进一步使事情复杂化, 如果在when 更新中不存在,我想将其插入并设置为1。 我一直在寻找类似的问题: 1. 在使用自动增量字段插入触发器之前/之后,以及 2. 使用触发器来更新另一个数据库中的表以 尝试将2.合并在一起。这是我到目前为止的内容: 任何建议和指示,我们将不胜感激。或者可能是我忽略的另一

  • 我有一个带有方法的model类,它用@preupdate进行了注释。此方法调用我的方法: 我的实现:

  • 问题内容: 是否有机会检测用户为元素类型HTML所做的每个文件选择? 之前曾多次问过这个问题,但是如果用户再次选择相同的文件,通常不会建议该事件。 问题答案: 的值设置到每个事件。即使选择了相同的路径,这也会重置的值并触发事件。 注意:如果文件以’C:\ fakepath'为前缀是正常的。这是一项安全功能,可防止JavaScript知道文件的绝对路径。浏览器仍然内部知道它。

  • 问题内容: 我有一个div,其内容可能会以各种方式更改:例如,可以通过innerHTML重新加载其整个内容,或者可以通过DOM方法添加节点。反过来,这可能是通过本地javascript发生的,也可能是通过调用jQuery API或其他库间接发生的。 我希望在div的内容改变为执行一些代码,但我 绝对没有控制 上 如何 将改变。确实,我正在设计一个可供其他人使用的小部件,他们可以自由选择自己喜欢的d