У меня есть событие .blur()
для четырех текстовых входов, к которым привязаны средства выбора даты и времени. Когда я «перехожу» к следующему элементу управления, он работает нормально, но когда я нажимаю где-то снаружи, событие не запускается. Я что-то не так делаю или проблема с событием .blur()
?
Код 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å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 Кажется, что события работают нормально. Проблема в том, что когда я щелкаю в средстве выбора даты, чтобы выбрать дату, уже при наведении курсора мыши на дату, событие запускается, даже если значение еще не установлено компонентом в тексте ввода!
Теперь я должен найти способ либо получить дату «нажатия мыши», либо отложить событие до того момента, когда оно действительно установлено в тексте ввода.
$.ajax
наconsole.log("in")
, и отображается сообщение каждый раз, когдаinput.calcTimespan
теряет фокус (проверено в IE9). Поэтому я думаю, что в вашем ajax-вызове есть проблема. - person M. Abbas   schedule 28.08.2012console.log(data)
к функцииsuccess
(непосредственно перед if) и убедиться, что у вас нет ошибок JS в консоли браузера. - person M. Abbas   schedule 28.08.2012