【问题标题】:JavaScript using enter to run field searchJavaScript 使用 enter 运行字段搜索
【发布时间】:2021-07-25 17:55:25
【问题描述】:

我对编程和任何事情都很陌生,现在我正在尝试改进一些内部程序和脚本。其中之一就是我们的预订系统。它使用 JS 和字段搜索来搜索所有项目,但是当按下回车而不是单击按钮时它不起作用。 我尝试使用tapermonkey脚本来修复它,但在按下回车时它没有捕获输入值。

这是输入和搜索按钮:

<input name="b$s111$l108s111$ctl00$googlesearch$i" 
type="text" 
maxlength="3998" 
id="b_s111_l108s111_ctl00_googlesearch_i" 
class="Edit" 
onfocus="HighlightTextBox(this, 'b$s111$l108s111$ctl00$googlesearch', false, false);" 
datavalidation="false" 
data-sectionid="111" 
data-fieldid="1841" 
onchange="setDirty('b_s111_l108s111_ctl00_googlesearch_IsDirty');
if(!IsLegalInputValue(this,'Search criteria')){return false;}" 
onblur="if(!IsLegalInputValue(this,'Search criteria')){return false;}ResetTextBox(this, 'b$s111$l108s111$ctl00$googlesearch', false, false, 'white');" 
onkeydown="CheckForShiftTab(event);if(event.keyCode == 9 &amp;&amp; !event.ctrlKey){if(!IsLegalInputValue(this,'Search criteria')){return false;}}" 
data-type="String" 
autocomplete="off" 
>

<button id="b_s111__fieldHelpSearch" 
tabindex="10" 
role="button" 
type="button" 
class="BaseButton SectionButton" 
onclick="baseButtonClick(event, 'b$s111$_fieldHelpSearch', true, 'action:_dofieldhelpsearch');" 
onkeydown="this.onclick(event);"
>

这是我写的脚本:

  var input = document.getElementById("b_s111_l108s111_ctl00_googlesearch_i");
     input.addEventListener("keydown", function(event) {
     if (event.keyCode === 13) {
        document.getElementById("b_s111__fieldHelpSearch").click();
  }
});

为什么搜索不正常,我该如何解决这个问题?

【问题讨论】:

    标签: javascript button search scripting


    【解决方案1】:

    如果你想要输入框中的值,那么我认为这行没有意义document.getElementById("b_s111__fieldHelpSearch").click(); 相反,您可以这样做:

    const input = document.getElementById('b_s111_l108s111_ctl00_googlesearch_i')
    input.addEventListener('keydown',(e)=>{
      if(e.keyCode === 13){
        console.log(e.target.value)
      }
    })
    

    【讨论】:

    • 感谢您的回答,这至少解决了一个问题。但不幸的是,我仍然无法弄清楚如何使用该值来实际搜索它。我认为我的问题是,我无法确定运行哪个函数来实际搜索
    • 您是否使用外部 API 进行搜索?如果是这样,那么您可以调用另一个函数,而不是控制台记录console.log(e.target.value) ,并将e.target.value 作为参数传递,从而发出api请求。如果有帮助,请考虑支持答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    相关资源
    最近更新 更多