0

我有一个包含文本的跨度,假设在我按下文本框中的某些内容后会不断变化。

<input type="text" class="response" onkeypress="return ChangeSpan()" id="how_many" name="how_many" placeholder="Enter how many..." />

和我的 jQuery:

<script type="text/javascript">
function ChangeSpan() {
    var text = $("#how_many").val();
    $('#changeText').text(text);
}
</script>

它工作得很好,但是当我按下让我们说时"dfg",它只出现"df"在跨度上。只有当我添加下一个字符时,它才会添加"g".

我希望它也响应最后一个字符,我该怎么做?

4

5 回答 5

6

您可能想使用keyup

您使用 jQuery 并内联添加事件?那是不好的做法。使用 on 附加事件。

$("#how_many").on("keyup", function(){ $('#changeText').text( this.value ); });

quirksmode上解释了 keyup、keydown 和 keypress 之间的区别。

于 2012-04-14T18:20:29.980 回答
1

是的,我可能会迟到一点,但实际上使用keypresskeyup因为如果你按住一个键很长时间它会在你释放它时出现,如果你使用keyup.

如果您使用keypress,您将直接看到您输入的内容,但您必须使用它,如下面的代码所示。

唯一的问题是,keypress如果您删除字符,它将无法识别。所以keypress更好,但keyup也应该使用。

$("#how_many")
    .keypress(function(e) {
        var text = $("#how_many").val() + String.fromCharCode(e.which);
        $("#changeText").text(text);
    })
    .keyup(function(e) {
        var text = $("#how_many").val();
        $("#changeText").text(text);
    });​

看看这个例子。就是之前的代码。

还有这个例子。这是之前的代码,没有使用keypress.

在文本框处于焦点时按住两个示例中的任意字符键。如您所见,第一个示例反应更好。

于 2012-04-14T19:23:28.680 回答
0
<input type="text" class="response" onkeyup="return ChangeSpan()" id="how_many" name="how_many" placeholder="Enter how many..." />
于 2012-04-14T18:19:30.500 回答
0

为什么不直接使用绑定?这应该这样做:

<input type="text" class="response" id="how_many" name="how_many" placeholder="Enter how many..." />



$(window).load(function(){
   $("#how_many").bind('focus blur keyup',function(){
     $('#changeText').text($(this).val());
   }); 
})
于 2012-04-14T18:20:43.650 回答
0

尝试将您的事件更改为 keyup。这是一个例子:

http://jsfiddle.net/SHdTL/

注意:我建议使用 jquery 来分配您的事件侦听器,而不是内联,但这与您的问题无关。

于 2012-04-14T18:30:19.410 回答