我无法在同一元素上成功地使用focusout事件中的.focus()。我也用setTimeout试过了。有什么想法吗?
$(control).focusout(function (e) {
if ($(this).val().length > 0) {
for (var ii = 0; ii < sampleDTOList.length; ii++) {
if (sampleDTOList[ii]["controlId"] == $(this).attr("id")) {
if ($(this).val() <= parseFloat(sampleDTOList[ii]["maxValue"]) && $(this).val() >= parseFloat(sampleDTOList[ii]["minValue"])) {
sampleDTOList[ii]["value"] = $(this).val();
RunRulesOnSample(sampleDTOList[ii]);
return;
}
else {
$(this).val("");
alert("You must enter a value between " + sampleDTOList[ii]["minValue"] + " and " + sampleDTOList[ii]["maxValue"] + ".");
$(this).focus();
return;
}
}
}
}
});发布于 2013-06-20 07:28:43
我认为不可能直接在焦点输出事件处理程序上调用焦点函数。此外,不能在事件对象上使用preventDefault(),因为focusout事件是不可取消的。
但是看起来你可以使用setTimeout函数:
$('#foo').focusout(function(e) {
setTimeout(function() {
$('#foo').focus();
}, 10);
});看看这个jsFiddle。
您还可以找到使用mousedown event here的解决方法
https://stackoverflow.com/questions/17202911
复制相似问题