2016-04-26 50 views
0

这一定很容易,但由于我可怜的jQuery技能,我真的陷入困境,无法解决问题。在输入时添加带有转换字符的输入字段,JQUERY

目标是当用户在输入字段中键入时,将拉丁字符转换为大写希腊字符。

看起来我非常接近,但我的问题是,我将拉丁字符和希腊字符组合在一起进行单个按键事件。这里是我的小提琴https://jsfiddle.net/harman79/dymtufy8/

HTML:

<input type="search" id="search-id"> 

JQUERY:

$("#search-id").bind('keyup', function(e) { 
    var charMap = { 
    65: 913, 
    66: 914, 
    67: 936, 
    68: 916, 
    69: 917, 
    70: 934, 
    71: 915, 
    72: 919, 
    73: 921, 
    74: 926, 
    75: 922, 
    76: 923, 
    77: 924, 
    78: 925, 
    79: 927, 
    80: 928, 
    81: 931, 
    82: 929, 
    83: 931, 
    84: 932, 
    85: 920, 
    86: 937, 
    87: 937, 
    88: 935, 
    89: 933, 
    90: 918 
    }; 

    $.each(charMap, function(index, value) { 
    if (index == e.which) { 
     $("#search-id").val(function(index, val) { 
     return val + String.fromCharCode(value); 
     }); 
    } 
    }); 
}); 

如果我更换return val + String.fromCharCode(value);return String.fromCharCode(value);我只得到我的转换后的文字,但每个新的keyup取代以前输入的内容。

任何hep将不胜感激! 哈利

回答

1

你可以试试这个:

$("#search-id").bind('keyup', function(e) { 
 
    var charMap = { 
 
    65: 913, 
 
    66: 914, 
 
    67: 936, 
 
    68: 916, 
 
    69: 917, 
 
    70: 934, 
 
    71: 915, 
 
    72: 919, 
 
    73: 921, 
 
    74: 926, 
 
    75: 922, 
 
    76: 923, 
 
    77: 924, 
 
    78: 925, 
 
    79: 927, 
 
    80: 928, 
 
    81: 931, 
 
    82: 929, 
 
    83: 931, 
 
    84: 932, 
 
    85: 920, 
 
    86: 937, 
 
    87: 937, 
 
    88: 935, 
 
    89: 933, 
 
    90: 918 
 
    }; 
 

 
    $.each(charMap, function(index, value) { 
 
    if (index == e.which) { 
 
     $("#search-id").val(function(index, val) { 
 
     // Remove last character and replace with new value 
 
     return val.substring(0, val.length - 1) + String.fromCharCode(value); 
 
     }); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="search" id="search-id">

+0

非常感谢队友!让我放松。看起来,我将不得不用keydown替换我的keyup以获得更快的转换响应,但是现在所有的逻辑都在那里了.. – harman

+0

是的,keydown会是你想要的最好的选择。 – KiiroSora09

相关问题