jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jQuery .focus(在字段X上)导致.blur(在字段X上)被调用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_696_4@ 有谁知道为什么jQuery .focus函数会导致onblur事件被调用.我问的原因是因为在我的 JavaScript自定义psuedo类中,我称之为.

jQuery(thistemp.Elements.TxtSamplEID).blur(Function.createDelegate(thistemp,thistemp.preAccessioningLoad));

但是对于我的WCF服务的AJAX调用,成功的JavaScript函数(在同一个类中),我有这个代码. * .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),this.PreAccessioningLoadError));
    }
    return false;  //prevent page postBACk
},

=========================================
添加我的源代码

< asp:TextBox id =“TxtSamplEID”runat =“server”class =“LIMSInputField”onfocus =“Change(this,event)”onblur =“Change(this,event)”/>

<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>

解决方法

听起来问题是警报触发模糊(因为它现在正在接收焦点):

alert("this alert gets called twice when .focus() function called ???");

看到:

http://jsfiddle.net/on50g7cr/2/

如果您选择“聚焦”按钮,然后单击“单击我!”你会看到模糊事件被触发两次(一次失去焦点到“点击我”按钮然后再次失去焦点到警报窗口).

大佬总结

以上是大佬教程为你收集整理的jQuery .focus(在字段X上)导致.blur(在字段X上)被调用全部内容,希望文章能够帮你解决jQuery .focus(在字段X上)导致.blur(在字段X上)被调用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。