Javascript 实时字段修改
我目前正在开发一个web应用程序,其文本字段有9位数字,用破折号分隔(例如:“123-456-789”)。客户端希望应用程序在用户键入时自动在正确的位置插入破折号 然而,在某些浏览器上(即Android 4.3及以下版本和iOS 6 Safari及以下版本),当前的实现有一些奇怪的行为——每当插入破折号时,光标都不会移动(对于用户来说,它会返回一个),因此当用户键入“12345”时,字段看起来像“123-5 | 4”。(管道表示光标) 下面是我能想到的最简单的代码示例,它演示了这个问题: (请记住,它只在较旧的移动浏览器上存在问题) 所以我有两个问题:Javascript 实时字段修改,javascript,mobile,web,cross-browser,Javascript,Mobile,Web,Cross Browser,我目前正在开发一个web应用程序,其文本字段有9位数字,用破折号分隔(例如:“123-456-789”)。客户端希望应用程序在用户键入时自动在正确的位置插入破折号 然而,在某些浏览器上(即Android 4.3及以下版本和iOS 6 Safari及以下版本),当前的实现有一些奇怪的行为——每当插入破折号时,光标都不会移动(对于用户来说,它会返回一个),因此当用户键入“12345”时,字段看起来像“123-5 | 4”。(管道表示光标) 下面是我能想到的最简单的代码示例,它演示了这个问题: (请记
- 有没有一种方法可以在这些浏览器上运行得更好李>
- 有没有一种方法可以清晰地检测哪些浏览器会按照我想要的方式运行,并且只为那些浏览器启用此功能
$('#text-field').on('input', function() {
var text = $(this).val().replace(/\-/g, '');
var formatted = "";
formatted += text.substring(0, Math.min(3, text.length));
if (text.length > 3) {
formatted += "-" + text.substring(3, Math.min(6, text.length));
}
if (text.length > 6) {
formatted += "-" + text.substring(6, Math.min(9, text.length));
}
$(this).val(formatted);
});