例如,如果我有一个搜索功能可以搜索主题标签(#)和人物(@),那么当人们真正输入该字符时,处理这种情况的最佳方法是:
SEARCH: @sally
或
SEARCH: #trendyTag
而不是:
SEARCH: sally
或SEARCH: trendyTag
我使用的特定label
和input
代码当然也有占位符,但我不想指望用户阅读或关注它。现在看来,如果他们输入一个符号,他们的结果就不会被退回,所以我实施了一个便宜的黑客,只接受每个不同类别的特定符号,但我希望那里更好以角度来做这个的方法。
答案 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>