javascript - 当用户输入一个数字时,显示一个对话框
问题描述
我们有一个商店,用户可以通过输入产品名称或搜索产品 SKU 进行搜索。我们希望向在搜索框中输入数字的用户显示提示,以向他们提供一些有关搜索 SKU 的信息。
示例:搜索 Polo,没有任何反应。搜索 GD459,会出现一个提供信息的框。
我在 SO 上看到了很多答案,它们检测整个事物是数字还是文本 - 但不是两者兼而有之。
我知道要检测用户类型,我应该执行以下操作:
$("form input").keyup(function(){
// presumably an if statement?
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="/search" method="get" class="input-group search-bar" role="search" >
<input type="search" name="q" value="{{ search.terms | escape }}" placeholder="{{ 'general.search.placeholder' | t }}" class="input-group-field" aria-label="{{ 'general.search.placeholder' | t }}">
<br>
<span class="input-group-btn">
<button type="submit" class="btn icon-fallback-text">
<span class="icon icon-search" aria-hidden="true"></span>
<span class="fallback-text">{{ 'general.search.submit' | t }}</span>
</button>
</span>
</form>
我很欣赏这并不是要编写大量代码,但是正确方向的一般要点确实会有所帮助。
解决方案
尝试类似:
$("form input").keyup(function(){
if(this.value.match(/^[a-zA-Z]+$/) && this.value.match(/^[0-9]+$/)) {
alert('Letters and numbers!');
} else {
// Not letters and numbers
}
}
如果您有特定的 SKU 格式,您可以进一步细化,例如 2 个字母加 4-8 个数字:
$("form input").keyup(function(){
if(this.value.match(/^[a-zA-Z]{2}[0-9]{4,8}$/)) {
alert('Match');
} else {
// No match
}
}
推荐阅读
- python - 如何找到与值的相关性
- python - 如何在没有专用 .json URL 的情况下从网页中检索 JSON?
- drupal - 如何在没有特定模块参考的情况下在 Drupal 8 中记录错误
- regex - 正则表达式仅捕获每行的第一个时间戳
- java - 如何用 JAXB 替换编组中的 CCH(取消字符)
- r - lpSolve - 将函数优化为特定值 + 向量的 10%
- java - 比较两个列表中的元素
- javascript - Mcqs 使用 vue.js 和 vuetify 突出显示错误和正确的答案
- java - 关于 santuario (Java) 的示例或教程?
- python - 使用自动微分库计算任意张量的偏导数