2012-08-28 1 views
0

У меня есть событие .blur() для четырех текстовых входов, к которым прикреплены датпикер и таймер. Когда я «вставляю» в следующий элемент управления, он работает нормально, но когда я нажимаю где-то снаружи, событие не запускается. Я что-то делаю неправильно, или есть проблема с событием .blur()?.blur() не срабатывает при нажатии за пределами datepicker

JavasSript код события:

$(".calcTimespan").blur(function() { 
     $.ajax({ 
      type: "GET", 
      url: '@Url.Action("CalculateTimespan")', 
      data: { 
       "franDatum": $("#Dyk_FranDatum").val(), 
       "franTid": $("#Dyk_FranTid").val(), 
       "tillDatum": $("#Dyk_TillDatum").val(), 
       "tillTid": $("#Dyk_TillTid").val() 
      }, 
      dataType: 'html', 
      cache: false, 
      success: function (data) { 
       if (data != "FAIL") 
        $("#Dyk_DyktidMinuter").val(data); 
      }, 
      error: function (jqXHR, textStatus, errorThrown) { 
       alert("Ett fel inträffade vid hämtning av dykning!"); 
      } 
     }); 
    }); 

HTML-:

<div> 
     <label for="Fr_n_datum">Fr&#229;n datum</label> 
     <label style="margin-left: 40px;">Tid</label> 
     <br /> 
     <input class="halv datumpicker calcTimespan" id="Dyk_FranDatum" name="Dyk.FranDatum" type="text" value="" /> 
     <input class="halv tidpicker calcTimespan" id="Dyk_FranTid" name="Dyk.FranTid" type="text" value="" /> 
    </div> 
    <br /> 

    <div> 
     <label for="Till_datum">Till datum</label> 
     <label style="margin-left: 50px;">Tid</label> 
     <br /> 
     <input class="halv datumpicker calcTimespan" id="Dyk_TillDatum" name="Dyk.TillDatum" type="text" value="" /> 
     <input class="halv tidpicker calcTimespan" id="Dyk_TillTid" name="Dyk.TillTid" type="text" value="" /> 
    </div> 
    <br /> 

    <div> 
     <label for="Dyktim__min_">Dyktim (min)</label> 
     <label style="margin-left: 33px;">Pris per minut</label> 
     <br /> 
     <input class="halv" id="Dyk_DyktidMinuter" name="Dyk_DyktidMinuter" type="text" value="" /> 
     <input class="halv" id="Dyk_Pris" name="Dyk.Pris" type="text" value="" /> 
    </div> 

Я нацеливание только IE9.

EDIT Кажется, что события работают нормально. Проблема заключается в том, что когда я нажимаю кнопку datepicker, чтобы выбрать дату, уже при указании мыши на дату, событие запускается, хотя значение еще не установлено компонентом во входном тексте!

Теперь я должен найти способ получить «мышь вниз» -date или задержать событие, когда оно действительно установлено во входном тексте.

+3

Это не HTML .. вы должны вставить * сгенерированный вывод * вашего внутреннего кода. –

+0

. Снимает ли элемент фокус при нажатии на внешнюю сторону? Событие blur() вызывается только тогда, когда элемент теряет фокус. –

+0

Вы правы, теперь это обновлено. – kaze

ответ

1

вопрос я был на самом деле имея это было: jqueryUI datepicker fires input's blur before passing date, avoid/workaround?

Я использовал вариант из Purells ответа решить мою проблему.

Спасибо за поддержку. Именно помощь в этом вопросе привела меня к реальной проблеме.

+0

Хорошая работа в том, чтобы не отбирать его ответ в качестве реального ответа и в процессе потери ответа для дальнейшего использования. Как я уже не могу найти его сейчас. – Blackunknown

0

Похоже, что проблемы с IE9 и событие размытия не срабатывают последовательно, вместо этого попробуйте привязать элементы с помощью focusout.

+0

Спасибо за ваш ответ, он не помог, хотя, точно такое же поведение. – kaze