ie8 событие обновления значения

0

Я смотрел на это в течение 2 часов. Цель заключается в том, когда пользователь выберет поле из поля, значение будет преобразовано в две цифры.

По какой-то причине IE8 задыхается от этого при первом запуске, но он работает во второй раз. После этого время от времени ломается.

//опорный снипп

events: {
  'blur [name=month], [name=day], [name=year]': 'sanitizeAge'
},

'sanitizeAge': function(e) {
  var view = this;
  var $el = $(e.target);
  var $val = $el.val();

  if($val.length === 1){
    $el.val('0'+$val);  
  }
},

//html-фрагмент

   <div class="padded grid-quarter">
        <input name="month" type="text" placeholder="MM" class="grid-whole text-field month" data-validate="month" data-min="2" maxlength="2" tabindex="3">
    </div>
    <div class="padded grid-quarter">
        <input name="day" type="text" placeholder="DD" class="grid-whole text-field day" data-validate="day" data-min="2" maxlength="2" tabindex="4">
    </div>
    <div class="padded grid-half">
       <input name="year" type="text" placeholder="Year of Birth" class="text-field grid-whole  year" data-validate="year" data-min="4" maxlength="4" tabindex="5">
    </div>

</fieldset>
  • 0
    Начнем с очевидного ... не могли бы вы использовать onchange вместо события blur?
Теги:
internet-explorer
backbone.js

2 ответа

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

Вот упрощенная версия вашего ответа:

'sanitizeAge': function(e) {
  var val = e.target.value;
  if (val.length === 1){
    e.target.value = '0'+val;
  }
},
0

Я смог заставить его работать только путем получения значения через javascript вместо jquery.

'sanitizeAge': function(e) {
  var view = this;
  var $el = $(e.target);
  var $val = $el[0].value; // <---- FIX

  if($val.length === 1){
    $el.val('0'+$val);  
  }
},

Ещё вопросы

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