首页 > 解决方案 > 当用户输入一个数字时,显示一个对话框

问题描述

我们有一个商店,用户可以通过输入产品名称或搜索产品 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>

我很欣赏这并不是要编写大量代码,但是正确方向的一般要点确实会有所帮助。

标签: javascriptjquery

解决方案


尝试类似:

$("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
    }
}

推荐阅读