【发布时间】:2012-08-28 12:59:19
【问题描述】:
我有四个文本输入的.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。
编辑 似乎这些事件运行良好。问题是,当我在日期选择器中单击以选择日期时,已经在日期上按下鼠标,事件被触发,即使输入文本中的组件尚未设置该值!
现在,我必须找到一种方法来获取“鼠标按下”日期或将事件延迟到它在输入文本中实际设置的时间。
【问题讨论】:
-
那不是 HTML.. 你应该插入后端代码的生成的输出
-
点击外部时元素是否失去焦点? blur() 事件仅在元素失去焦点时被调用。
-
你说得对,现在更新了。
-
@BartFriederichs,是的,光标在另一个输入框中闪烁。
-
你怎么能确定 .blur() 在外面点击时不会触发。这是一个示例jsfiddle.net/m9jEq,我用
console.log("in")替换了$.ajax,并且每次input.calcTimespan失去焦点时都会显示“in”消息(在IE9 中测试)。所以我认为你的ajax调用有问题。
标签: javascript jquery internet-explorer-9 onblur