javascript - 如何在没有preventDefault()的情况下按Enter按钮禁用特殊字符?
问题描述
我有一个搜索字段:
<div class="search-fill">
<input type="search" name="search" id="search" class="autocomplete" autocomplete="off" placeholder="Search..." value="@ViewBag.Terms"/>
</div>
以及与之相关的按钮:
<div class="search-submit">
<button id="searchbutton" class="search-button"><i class="fa fa-search" onclick="removeSpecialChar()"></i></button>
当用户按下Enter键时,此代码不起作用。我知道我们可以通过 preventDefault() 禁用 Enter,但是有没有其他方法可以做到这一点,因为我希望用户即使在单击 Enter 时也能够进行搜索?
解决方案
检查这个
$(function () {
$('[type="search"]').bind('paste input', removeSpecialChars);
})
function removeSpecialChars(e) {
var self = $(this);
setTimeout(function () {
var initVal = self.val(),
outputVal = initVal.replace(/[^A-Z0-9]+/i, '');
if (initVal != outputVal) self.val(outputVal);
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="search" name="search" id="search" class="autocomplete" autocomplete="off" placeholder="Search..." />
推荐阅读
- python - 不完整的散点图图例:当前点的大小不足
- flutter - 键盘打开时如何避免底部溢出(在警报对话框中)
- angular - Angular 在 ngAfterViewInit 或 ngOnInit 中激活 @HostListener
- python - 如何将带有numpy数组的字典转换为json并返回?
- pdf - 通过在 PDF 内容后附加一些内容,在现有 PDF 文档上添加文本
- android - InstallReferrerReceiver 在实时应用程序中不起作用
- runtime - Hasura:通过 API 调用在运行时(动态)更改 Hasura 中的权限/模式
- typescript - Application Insights TrackEvent 从未在 Azure 中保留
- firebase - 从两台计算机使用 firebase 服务
- php - 如何从 laravel 中的数据透视表中制作可靠的下拉菜单