Кто-нибудь знает, почему функция jQuery .focus вызывает событие onblur. Причина, по которой я спрашиваю, заключается в том, что в моем пользовательском классе псевдо JavaScript я вызываю это.
jQuery(thisTemp.Elements.TxtSampleId).blur(Function.createDelegate(thisTemp,
thisTemp.PreAccessioningLoad));
Но внутри успешной функции JavaScript (в этом же классе) для моего вызова AJAX моей службы WCF у меня есть этот код. Строка * .focus вызывает другой экземпляр моего делегата выше. Я могу доказать это, комментируя это. Со строкой мое оповещение вызывается дважды. Без этого мое оповещение вызывается только один раз.
PreAccessioningLoadSuccess: function(quickDataEntryObject) {
var val = jQuery(this.Elements.TxtSampleId).val().replace(/^\s\s*/, "").replace(/\s\s*$/, "");
var intRegex = /^\d{1,10}$/;
if (!intRegex.test(val)) {
jQuery(this.Elements.SampleIdAjaxValidate).html("<span style='color:red'>Sample Id must contain between 1 and 10 digits</span>");
jQuery(this.Elements.TxtSampleId).focus();
jQuery(this.Elements.ImageAjaxSpinner).css("visibility", "hidden");
alert("this alert gets called twice when .focus() function called ???");
return false;
}
else {
jQuery(this.Elements.SampleIdAjaxValidate).html(""); // clear AJAX validation
}
...
Почему это случилось?
============
Вот мое делегатское событие согласно запросу:
PreAccessioningLoad: function(sender) {
if (this.Elements.TxtSampleId.value != "") {
var service = new Acu.LIMS.UI.Web.WCFServices.Accessioning.QuickDataEntryService();
jQuery(this.Elements.ImageAjaxSpinner).css("visibility", "visible");
service.PreAccessioningLoad(this.Elements.TxtSampleId.value, Function.createDelegate(this, this.PreAccessioningLoadSuccess), Function.createDelegate(this, this.PreAccessioningLoadError));
}
return false; //prevent page postback
},
=========================================
Добавление моего исходного кода:
<script type="text/javascript">
function Change(obj, evt) {
if (evt.type == "focus") {
obj.style.borderColor = "black";
obj.style.backgroundColor = "#90EE90"; // light green on focus
}
else if (evt.type == "blur") {
obj.style.borderColor = "white";
obj.style.backgroundColor = "#7AC5CD"; // light blue on blur
}
}
</script>