2017-08-14 44 views
0

我有一个通过Google应用程序脚本作为网络应用发布的html页面。在页面上是用户键入要搜索的数字的输入框(文本框)。如果他们点击框旁边的“搜索”按钮,它可以正常工作。如果他们键入数字,然后按下键盘上的“输入”,则会引发400错误('在此服务器上找不到请求的URL')。谷歌应用脚​​本 - 在输入文本框中输入密钥 - 如何捕获或禁用?

输入区号:

<input type="text" id="claimSearchBox" class="form-control" placeholder="Search" /> 
<input type="button" id="btnsearchClaims" class="btn-md btn-success" onclick="getOrders" value="Search for a Claim" /> 

的javascript: (此作品为按钮)

document.getElementById("btnsearchClaims").addEventListener("click", getOrders); 

(这不适合输入框工作)

document.getElementById("claimSearchBox").addEventListener("keyup", function(event) { 
event.preventDefault(); 
console.log('event: ' + event.keyCode); 
if (event.keyCode == 13) { 
    console.log('correct key'); 
    getOrders(); 
} 
}); 

我也尝试过这种方法,它显示按下哪些按键,但只要按下Enter键,就会进入400错误。

$(document).ready(function(){ 
    $("claimSearchBox").keyup(function(e){ 
    console.log(e.keycode); 
    console.log("worked"); 

    }); 
}); 

有什么建议吗?如果我无法将其重定向到getOrders(),是否有办法禁用“回车”?

**编辑添加...如果我没有对输入框进行任何编程,并且用户按下Enter键 - 进入错误页(页面为空 - 错误显示在控制台中)。

***发现问题:原来这是这个输入框是窗体上唯一的输入框的问题。当用户点击输入时,它会自动提交表单!我在这里找到了问题/解决方案:Why does forms with single input field submit upon pressing enter key in input

回答

0

这可以帮助您进一步了解您的代码。

我看到你正在调用jQuery。

$(document).ready(function(){ 

你能确定你正在显示的页面正在正确加载jQuery吗?

你的html应该有这样的礼物。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 

如果你使用你的调试器,并成功地输入你的readythen,你有jQuery加载。

使用jQuery,您可以简化您的事件处理。

更换

document.getElementById("btnsearchClaims").addEventListener("click", getOrders); 

随着

$("#btnsearchClaims").on("click", getOrders); 

更换

document.getElementById("claimSearchBox").addEventListener("keyup", 
function(event) { 

随着

$("#claimSearchBox").on("keyup", function(event)... 
+0

感谢@ terrywb。我有jQuery正确加载。原来这是这个输入框是窗体上唯一的输入框的问题。当用户点击输入时,它会自动提交表单!我在这里找到了问题/解决方案:[link](https:// stackoverflow。COM /问题/ 1370021 /为什么 - 不 - 的形式,与单输入字段提交 - 在压输入键式输入) – NotInTheCity