jQuery KeyPress限制我在TextArea上的输入

时间:2010-06-28 11:15:44

标签: jquery html textarea

我有这段代码:

$('#typer').keypress(function(e){

            var code = (e.keyCode ? e.keyCode : e.which);

            if (code == '13') {
                $.sound.play("cr.wav",{timeout:1000}); 
            } else if (code == '8') {
                $.sound.play("del.wav",{timeout:1000});
            } else if (code == '27') {
                $.sound.play("asswipe.wav",{timeout:1000});
            } else {
                $.sound.play("key.wav",{timeout:1000});
            }
        });

现在,出于某种原因 - 我只能在此框中输入 一个字符 。声音播放一次,然后再播放。

这在IE中运行良好......只是FireFox ......

插件链接:http://code.google.com/p/jqueryjs/source/browse/trunk/plugins/sound/jquery.sound.js?r=5750

有没有人曾经使用过这个插件....?

3 个答案:

答案 0 :(得分:2)

首先,e.which是一个数字,而不是一个字符串,所以你应该丢失单引号:使用code == 13,而不是code == '13'。转换语句可能会更好(尽管这只是一个偏好问题)。

其次,我认为问题不在于插件。不使用插件,这有同样的问题:

$('#typer').keypress(function(e) {
    var snd = $('<embed hidden="true" loop="false" src="key.wav" autostart="true" height="0" />');
    snd.appendTo("body");
    setTimeout(function() { snd.remove(); }, 1000);
});

似乎FF和Chrome不能很好地动态添加<embed>个标签。您可能想要查找不同的插件,一个不使用该标签的插件。我不是flash的粉丝,但可能有一些使用它的插件,而且运行良好。

答案 1 :(得分:0)

也许尝试keydown而不是按键?我在使用按键操作RPG sprite角色移动项目时遇到了很多问题,其中数字与预期的键不匹配,完全放弃了它而支持keydown。

如果这不起作用,我可以考虑复制你的环境。

修改 这对我来说似乎很有用(Chrome&amp; Firefox 3.6): http://resopollution.com/experiments/sound/sound.html

我注意到该页面只是打开了音频文件(似乎有些错误),但无法复制它。也许这就是你所经历的......现在我的工作正常。

如果您仍然遇到问题......

备选方案1 您可以将不可见标记(在插件中)更改为不可见的链接到具有自动播放的wav文件并且没有循环的页面。

备选方案2 使用html5 / flash选项。 http://www.schillmania.com/projects/soundmanager2/

答案 2 :(得分:0)

// play a sound from the url, on a track, stopping any sound already running on that track
    $.sound.play(url, {
     track: "track1"
    });

以上是您正在使用的插件的文档。

您是否尝试在新曲目上播放每种声音?

我会为每个按键功能的每个曲目创建一个新名称,并将声音src分配给该新曲目。