一旦有搜索输入。
它负责根据用户输入过滤表格中的数据
但是这个搜索输入很特别:除非输入最少3个字符,否则它不会做任何事情
不是因为它很懒惰,而是因为它没有意义。
一切都很好,直到一个新的和奇怪的(与英语相比)语言来到城镇 它是日本人,现在最小的字符串长度为3是愚蠢无用的。
我丢失了那个故事的最后几页。有人记得它是如何结束的吗?
答案 0 :(得分:1)
我猜这主要取决于你从哪里获得最小长度变量。如果它是硬编码的,你可能最好使用动态国际化模块:
int.getMinStringLength(int.getCurrentLanguage())
要么有动态绑定框架,例如AngularJS,要么在用户更改语言时更新该模块。
现在,您可能希望使用分组属性(例如“详细”和“精简”)对支持的语言进行排序。
答案 1 :(得分:1)
为了解决问题,您显然需要确定用户的输入是否属于某些脚本。最明显的方法是使用Unicode Regular Expressions:
var regexPattern = "[\\p{Katakana}\\p{Hiragana}\\p{Han}]+";
唯一的问题是,JavaScript不支持开箱即用的这种正则表达式。无论如何,你很幸运 - 有一个名为XRegExp的JS库,它的Scripts插件似乎正是你所需要的。现在,问题是,你是否想要为非日本或非中国用户至少需要三个字符,否则就要这样做 - 对于某些脚本(拉丁语,普通语,西里尔语,希腊语和希伯来语)至少需要三个字符,而允许在一个角色上搜索任何其他角色。我建议第二个解决方案:
if (XRegExp('[\\p{Latin}\\p{Common}\\p{Cyrillic}\\p{Greek}\\p{Hebrew}]+').test(input)) {
// test for string length and call AJAX if the string is long enough
} else {
// call AJAX search method
}
您可能希望预编译正则表达式以获得更好的性能,但基本上就是这样。