如何在jQuery中保存keyup事件的第一个原始值

时间:2014-07-09 22:06:59

标签: javascript jquery

这是我的小提琴: http://jsfiddle.net/dQ6vZ/22/

我有一个案例,我有重复元素和一些数值。

<div class="chars">
    <textarea></textarea>
    <span class="myVal">5</span>
    <span class="pres"> - preserved: 5</span>
</div>

<div class="chars">
    <textarea></textarea>
    <span class="myVal">10</span>
    <span class="pres"> - preserved: 10</span>
</div>

在键盘事件上(键入文本时)我应该使用类myVal保留span元素中的第一个原始值,但是在我键入的元素中更新值。

因此,如果原始值为5,我需要保留5,同时用新值替换用户可见的值。

我的开头看起来像这样:

var new_value = 0;

$( ".chars" ).keyup(function() {

    var preserved_increment = parseInt($(this).find(".myVal").text());

    var text_length = parseInt($(this).find("textarea").val().length);

    new_value = text_length + preserved_increment;

    $(this).find(".myVal").text( new_value );
    $(this).find(".pres").text( " - not preserved: " + preserved_increment );
});

2 个答案:

答案 0 :(得分:1)

使用data function provided by jQuery执行此任务。

我已更新您的代码以保留文本区域内的原始值。 jsfiddle

要访问原始值,只需致电:

    var originalValue = $(this).find(".myVal").data("original")

答案 1 :(得分:1)

使用data- *属性,然后使用jQuery的.data方法获取值

HTML

<div class="chars">
    <textarea></textarea>
    <span class="myVal" data-preserved="5">5</span>
    <span class="pres"> - preserved: 5</span>
</div>

JS

var preserved_increment = parseInt($(this).find(".myVal").data("preserved"));

JSFiddle