событие Change jQuery на <вход> элемент - какой-либо способ сохранить предыдущее значение?

решение в php

<?php
function random_5(){
    return rand(1,5);
}


function random_7(){
 $total = 0;

    for($i=0;$i<7;$i++){
        $total += random_5();
    }

    return ($total%7)+1; 
}

echo random_7();
?>
75
задан SeanW 21 July 2009 в 13:02
поделиться

3 ответа

Лучшим подходом является сохранение старого значения с использованием .data. Это избавляет от создания глобальной переменной, от которой вам следует держаться подальше, и сохраняет информацию, заключенную в элемент. Реальный пример того, почему глобальные переменные плохие, задокументирован здесь

, например,

<script>
    //look no global needed:)

    $(document).ready(function(){
        // Get the initial value
       var $el = $('#myInputElement');
       $el.data('oldVal',  $el.val() );


       $el.change(function(){
            //store new value
            var $this = $(this);
            var newValue = $this.data('newVal', $this.val());
       })
       .focus(function(){
            // Get the value when input gains focus
            var oldValue = $(this).data('oldVal');
       });
    });
</script>
<input id="myInputElement" type="text">
104
ответ дан 24 November 2019 в 11:38
поделиться

В русскоязычном ответе он связывает событие фокуса. Я не думаю, что это необходимо.

Вы можете сохранить старое значение в событии изменения.

<script>
    $(document).ready(function(){

        var newValue = $('#myInputElement').val();
        var oldValue;

        $('#myInputElement').change(function(){
            oldValue = newValue;
            newValue = $(this).val();
        });
    });
</script>
<input id="myInputElement" type="text">
1
ответ дан 24 November 2019 в 11:38
поделиться

Вы можете скопировать значение поля ввода в скрытое поле всякий раз, когда фокус покидает поле ввода (что должно делать то, что вы хотите). См. Код ниже:

<script>
    $(document).ready(function(){
        $('#myInputElement').bind('change', function(){
            var newvalue = $(this).val();
        });
        $('#myInputElement').blur(function(){
            $('#myHiddenInput').val($(this).val());
        });
    });
</script>
<input id="myInputElement" type="text">

(не проверено, но должно работать).

4
ответ дан 24 November 2019 в 11:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: