Javascript 抓取用户输入的文本

Javascript 抓取用户输入的文本,javascript,jquery,html,textinput,Javascript,Jquery,Html,Textinput,我正在尝试使用输入文本字段中的数据动态更新span标记。基本上,我有一个文本字段,我希望能够抓住用户输入的内容,并在字段下方的span标记中显示给他们 代码: 在JS Fiddle中查看: 我猜keyup函数不是最好的方法。因为检查密钥将无法获取预填充或粘贴的表单输入 理想情况下,有一个神奇的jQuery函数,只要它检测到一个键,它就可以输出框中的任何信息,但是如果这个方法存在,我还没有找到它 编辑:你们真是太棒了。看起来.val()就是那个神奇的方法 第二个问题:您将如何限制输入?查看修改后的

我正在尝试使用输入文本字段中的数据动态更新span标记。基本上,我有一个文本字段,我希望能够抓住用户输入的内容,并在字段下方的span标记中显示给他们

代码:

在JS Fiddle中查看:

我猜keyup函数不是最好的方法。因为检查密钥将无法获取预填充或粘贴的表单输入

理想情况下,有一个神奇的jQuery函数,只要它检测到一个键,它就可以输出框中的任何信息,但是如果这个方法存在,我还没有找到它

编辑:你们真是太棒了。看起来.val()就是那个神奇的方法

第二个问题:您将如何限制输入?查看修改后的JSFIDLE,当用户输入类似
的html标记时,浏览器将对其进行解释并破坏表单。您是否指定了一个数组,然后对照该数组进行检查?jquery是否有类似PHP的strip_标记函数的功能

$('#profileurl').keyup(function(e) {
    $("#url-displayname").html($(this).val());
}).keypress(function(e) {
    return /[a-z0-9.-]/i.test(String.fromCharCode(e.which));
});
查看修改后的JSFIDLE:


更新:正如@GregL所指出的,
keyup
确实更好(否则,例如根本不处理退格)。

您可以使用


与roberkules的答案类似,但在基于Chrome的浏览器中,使用您建议的
keyup()
似乎更适合我:

$('#profileurl').keyup(function(e) {
    $("#url-displayname").html($(this).val());
});

更新的JSFIDLE:

对于第二个问题,如果您希望维护字符,而不是将其解析为html实体,则应改为:

$('#profileurl').keyup(function(key) {
    $("#url-displayname").text($(this).val());
});

请访问-

查看,这真是太棒了!这些解决方案的简单性令人震惊。第二个问题,如果可以的话,你会如何限制输入,这样用户就不会用随机样式或html代码破坏布局?请查看更新的演示@,它只允许
a-Z
0-9
-
使用正则表达式。第二条语句为什么要按键而不按键?有什么特别的原因吗?谢谢你花时间在这方面。很棒的解决方案。不知道javascript会用正则表达式解析。我还想允许下划线,所以我修改了正则表达式如下:return/[a-z0-9.-\u]/I.test(String.fromCharCode(e.which));
$('#profileurl').keyup(function(e) {
    $("#url-displayname").html($(this).val());
});
$('#profileurl').keyup(function(key) {
    $("#url-displayname").text($(this).val());
});