【问题标题】:How to prevent searching when users type even a letter?当用户输入一个字母时如何防止搜索?
【发布时间】:2021-01-30 11:00:25
【问题描述】:

我有以下带有输入选项的表单,并且 datalist 没有提交按钮。这是我创建的搜索栏。我也有带有 onchange 事件的 javaScript 来为选项标签添加 href。问题是,当用户想要搜索并输入一个字母时,它就会开始搜索。用户应该完全输入并且搜索引擎应该可以工作。如何防止这种情况发生?

$(document).ready(function() {
   $("[list='serv']").on("input propertychange", function() {
   window.location = $("#serv option[value='"+$("[list='serv']").val()+"']").find("a").attr("href")
   });
});
<form class="search">
  <input type="text" name="exx" list="serv" id="example">
  <datalist id="serv">
        <option value="google"><a href="https://www.google.com">google </a></option>
        <option value="facebook"><a href="https://www.facebook.com">facebook</a></option>
    </datalist>
</form>

【问题讨论】:

  • 请添加minimal reproducible example,因为change 事件仅应在输入元素的值被提交时触发,例如通过按下回车键,从选项列表中选择一个值,等等。
  • 最简单的解决方案是添加一个搜索按钮。
  • 全打字是什么意思?你必须指定。但是,我认为即使用户正在输入搜索星也会更好。这对用户来说更加友好。 (所有现代搜索都是在您键入时搜索或提供建议)
  • 如果用户甚至输入“p”,它就会开始搜索。当用户输入 product 而不是 p 并按回车键时,它应该开始搜索

标签: javascript html jquery ajax


【解决方案1】:

试试这个

document.getElementById("form").onSubmit=function(){
window.location.href = this.children[this.selectedIndex].getAttribute('href');

}
<form class="search" id="form">
  <input type="text" name="exx" list="serv" id="example">
  <input type="submit" style="display:none" value="Submit">
  <datalist id="serv">
        <option value="b"><a href="https://www.google.com">google </a></option>
        <option value="z"><a href="https://www.facebook.com">facebook</a></option>
    </datalist>
</form>

【讨论】:

  • 感谢您的回复。但在我的情况下它没有成功。 href 属性不起作用。之后,网址更改为 www.mysite.com/test?exx=b
  • 那你想要的结果是什么?
  • 应该是 www.mysite.com/product?exx=b 和 www.mysite.com/service?exx=b
  • 您是从 servlet 获取 href 属性,对吧?
  • 那么你缺少 action 属性,然后在表单中添加 action="Servlet 文件名"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
  • 2017-07-02
  • 2017-12-05
  • 2011-10-25
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多