刚刚浏览了fancyinput.js的代码并遇到了以下函数(您还可以看到相同的函数 HERE ):
charDir = {
lastDir : null,
check : function(s) {
var ltrChars = 'A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02B8\u0300-\u0590\u0800-\u1FFF'+'\u2C00-\uFB1C\uFDFE-\uFE6F\uFEFD-\uFFFF',
rtlChars = '\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC',
ltrDirCheck = new RegExp('^[^'+rtlChars+']*['+ltrChars+']'),
rtlDirCheck = new RegExp('^[^'+ltrChars+']*['+rtlChars+']');
var dir = rtlDirCheck.test(s) ? 'rtl' : (ltrDirCheck.test(s) ? 'ltr' : '');
if( dir ) this.lastDir = dir;
return dir;
}
}
这个功能到底在做什么?它的目的是什么?
如果我在控制台中运行以下代码:
var ltrChars = 'A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02B8\u0300-\u0590\u0800-\u1FFF'+'\u2C00-\uFB1C\uFDFE-\uFE6F\uFEFD-\uFFFF',
rtlChars = '\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC',
rtlDirCheck = new RegExp('^[^'+ltrChars+']*['+rtlChars+']');
console.log(rtlDirCheck);
rtlDirCheck
的值原来是一堆奇怪的不可读字符。
有人可以解释这个功能在做什么吗?
答案 0 :(得分:1)
此功能检查文本的方向。在英语等语言中,我们从左到右(ltr
)键入,但在阿拉伯语等语言中,他们从右到左(rtl
)键入。此函数检查从右到左语言中常见字符的存在和顺序,并根据它们是否存在,确定用户写入的方向。