0

为什么与用户完成输入或单击离开输入时相比,此更新不实时更新?

$(document).ready(function() {
    $("input[id^='ralph']").change(function() {
        var currentId = $(this).attr('id');
        var currentValue = $(this).val();
        //Billing
            var elements = currentId.replace('ralph','john');
            $('.' + elements).text(currentValue);
        //Shipping
            var elements = currentId.replace('john','george');
            $('.' + elements).text(currentValue);
    });
});
4

3 回答 3

1

您可以使用按键,因为在控件模糊之前不会发生更改事件。

在输入输入类型文本时查看帖子Best Way to Track onchange

来自 jQuery API

按键()

请注意,keydown 和 keyup 提供了指示按下哪个键的代码,而 keypress 指示输入了哪个字符。例如,小写的“a”将被 keydown 和 keyup 报告为 65,但被 keypress 报告为 97。所有事件都将大写“A”报告为 65。由于这种区别,当捕获特殊按键(如箭头键)时,.keydown() 或 .keyup() 是更好的选择。

改变()

当元素的值改变时,change 事件被发送到元素。此事件仅限于元素、框和元素。对于选择框、复选框和单选按钮,当用户使用鼠标进行选择时会立即触发该事件,但对于其他元素类型,该事件会延迟到元素失去焦点为止。

于 2013-06-04T14:34:00.073 回答
1

你想用.keyup

$(document).ready(function() {
    $("#ralph").on('keyup', function() {
        var currentId = $(this).attr('id');
        var currentValue = $(this).val();
        //Billing
            var elements = currentId.replace('ralph','john');
            $('.' + elements).text(currentValue);
        //Shipping
            var elements = currentId.replace('john','george');
            $('.' + elements).text(currentValue);
    });
});

另外,input[id^='ralph']也可以#ralph

这是它的工作原理。http://jsfiddle.net/yxYpW/

于 2013-06-04T14:35:07.660 回答
1

在现代浏览器上,您应该使用oninput事件:

$("#ralph").on('input', function() {...});

在旧的上,使用这个:

$("#ralph").on('keyup paste', function() {...});
于 2013-06-04T14:40:19.243 回答