Определить, был ли тип ввода «число» увеличен или уменьшен по сравнению с предыдущим значением

0

Есть ли хороший способ сделать это? Можете ли вы отправить исходное значение, а также новое значение функции jquery/javascript? Сохранение старого значения в некоторой глобальной переменной просто немного беспорядочно.

EDIT: код контекста

<input type='number' onchange='foo(...)'>

...

<script type=text/javascript>
function foo(...){
    if(old > new){
        alert('decreased');
    }else{
        alert('increased');
    }
}
</text>
  • 0
    Можем ли мы увидеть некоторый контекстный код?
  • 1
    Вы должны будете сохранить старую ценность и в рамках. Если вы работаете в глобальном пространстве, то вам придется хранить его глобально. Вы можете обернуть код, чтобы он не загрязнял глобальное пространство. , ,
Теги:

1 ответ

4
Лучший ответ

Поэтому не храните его в глобальной переменной:

<input type="number" value="5" />

$('input[type="number"]').change(function () {
    if (this.getAttribute('value') === this.value) {
        // setting the original 'lastvalue' data property
        $(this).data('lastvalue', this.value);
    } else {
        // take whatever action you require here:
        console.log(this.value < $(this).data('lastvalue') ? 'decrement' : 'increment');
        // update the lastvalue data property here:
        $(this).data('lastvalue', this.value);
    }
}).change();

Демо-версия JS Fiddle.

Вместо этого вы могли бы вместо this.getAttribute('value') === this.value использовать this.defaultValue === this.value (как в этой демонстрации JS Fiddle), this.defaultValue является исходным значением элемент на DOM-ready.

Рекомендации:

  • 0
    this.getAttribute('lastvalue') не должно быть this.getAttribute('lastvalue') ?
  • 0
    Нет, потому что a) нет атрибута 'lastvalue' *, и b) if просто устанавливает свойство lastvalue объекта данных при первом запуске (инициируется change() в последней строке цепочки). (* метод data() будет иметь некоторые свойства, равные атрибутам с префиксом data-* , если они существуют, но не будет обновлять эти атрибуты и сохранит их в объекте для последующего доступа.)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню