我试图在文本框中输入文本后立即使用Jquery在文本框中反转输入的字符串。
例如,如果用户输入了字符串"Hello Man , How are you "
。
预期输出为" uoy era woH , naM olleH"
这是我的try
当我复制并粘贴字符串“Hello Man,你好吗”时,这个小提琴按预期工作,它输出为"uoy era woH , naM olleH"
但是当我尝试逐个输入字符时,输出错误。
答案 0 :(得分:0)
这是因为您正在收听input
事件。每当用户在焦点位于输入中时按下某个键时,就会触发此事件。 (因此,当您复制/粘贴文本时,事件仅触发一次)。
只有当用户按Enter键和其他键时,才应该反转字符串。
您还可以收听blur
事件。当输入失去焦点时会触发它。
答案 1 :(得分:0)
对我来说很好看,只是设置一个延迟,所以当你输入时不会发生:
$('#here').on('input change keyup', function()
{
//alert($(this).val());
setTimeout(function()
{
$(this).val($(this).val().split("").reverse().join(""));
}, 500);
});
还为事件监听器添加了更改和密钥以包含C + P等,也许你可以在那里抛出蓝色,正如其他人对此问题的建议。
也意识到每次输入发生变化时都会触发,这意味着第一次反转会被重新反转,然后你会在每次偶数输入时回到原来的位置。
你能分开输出和输入框来解决这个问题吗?
答案 2 :(得分:0)
您的问题是您的光标始终位于文本的末尾,因此您在键入时将继续反转文本。
您可以使用'hack'并更新在输入上叠加的div:
$('#here').on('keyup', function() {
var reverse = $(this).val().split('').reverse().join('');
$('#display').text(reverse);
});