输入文本时,在文本框中反转文本

时间:2014-05-16 14:20:13

标签: jquery

我试图在文本框中输入文本后立即使用Jquery在文本框中反转输入的字符串。

例如,如果用户输入了字符串"Hello Man , How are you "

预期输出为" uoy era woH , naM olleH"

这是我的try

当我复制并粘贴字符串“Hello Man,你好吗”时,这个小提琴按预期工作,它输出为"uoy era woH , naM olleH"

但是当我尝试逐个输入字符时,输出错误。

3 个答案:

答案 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:

http://jsfiddle.net/f2g4u/2/

$('#here').on('keyup', function() {
   var reverse = $(this).val().split('').reverse().join('');
    $('#display').text(reverse);
});