使用angular否定用户从搜索字段输入的某些符号

时间:2015-03-13 16:56:02

标签: angularjs angularjs-directive

例如,如果我有一个搜索功能可以搜索主题标签(#)和人物(@),那么当人们真正输入该字符时,处理这种情况的最佳方法是:

SEARCH: @sallySEARCH: #trendyTag

而不是:

SEARCH: sallySEARCH: trendyTag

我使用的特定labelinput代码当然也有占位符,但我不想指望用户阅读或关注它。现在看来,如果他们输入一个符号,他们的结果就不会被退回,所以我实施了一个便宜的黑客,只接受每个不同类别的特定符号,但我希望那里更好以角度来做这个的方法。

1 个答案:

答案 0 :(得分:0)

我根据example form in Plunker制作了earlier SO answer

该示例使用Angular的内置表单验证功能,尤其是pattern属性,以通过正则表达式匹配来验证文本输入。您可能希望修改正则表达式以更好地匹配您的方案。

<form name="searchForm">
  <div>
    <label for="editSearchTerms" class="control-label">Search</label>
    <input 
      type="text" 
      id="editSearchTerms" 
      name="searchTerms" 
      placeholder="hashtag or people"
      ng-model="terms"
      pattern="^[a-zA-Z0-9]*$"
      required
      /> 
    <button ng-click="search(terms)" ng-disabled="searchForm.$invalid">Go</button>
  </div>
  <p class="invalid" ng-show="searchForm.$invalid && !searchForm.$pristine">
    The characters '@' and '#' are not allowed.
  </p>