JavaScript 使用 Enter 运行字段搜索

问题描述

我对编程和一切都很陌生,现在我正在尝试改进一些内部程序和脚本。其中之一是我们的预订系统。它使用 JS 和字段搜索搜索所有项目,但按 Enter 而不是单击按钮时它不起作用。 我尝试使用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,'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();
  }
});

为什么搜索不正常,我该如何解决

解决方法

如果你想要输入框内的值,那么我认为这一行没有意义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)
  }
})