none
【JS】JS函数不听话了,请高手帮忙 RRS feed

  • 问题

  • 今天遇到了一个奇怪的问题,执行的JS函数不听话了,没有达到预想效果。代码如下:
    <input class="newinput-1" maxlength="30"  onblur="nickNameResult(this);"
                                    size="32" id="nickname" runat="server" />
                                <span class="acquiesce" id="showNickInfo" >最多8个字符</span>

    JS函数如下:

    function nickNameResult(object)
    {

        if(object.value.length<=0||parten.test(object.value.replace(/[\u3000]/g,"")))
        {  
            $('nickname').value="";
            $('showNickInfo').className = "error"; 
            $('showNickInfo').innerHTML = "昵称不能为空,请输入您的昵称";
        //document.getElementById('showNickInfo').innerHTML = "昵称不能为空,请输入您的昵称";

      object.focus();

      nickNameFlag="1";//没有昵称
      return;  
        }

    }

    CSS代码如下:
    .error {
     PADDING-RIGHT: 0px; BACKGROUND-POSITION: left center; PADDING-LEFT: 22px; FONT-SIZE: 12px; BACKGROUND-IMAGE: url(../img/error-icon.gif); PADDING-BOTTOM: 0px; COLOR: #ab346c; PADDING-TOP: 0px; BACKGROUND-REPEAT: no-repeat
    }
    一个奇怪的问题,文本框中没有值的时候,鼠标离开文本框触发onblur事件执行nickNameResult方法,正常来说span标签内应该有对应提示字体,这到好,没有任何提示字体,而且页面也没有什么错误。而且我发现,执行了onblur事件后,整个页面的文本文字部分无法用鼠标左键选择。我用的是IE6浏览器,请问我到底错在哪里?高手指教。表示感激!

    但是发现火狐好用

    • 已移动 Sheng Jiang 蒋晟 2010年1月23日 19:35 非System.Web (发件人:ASP.NET 与 AJAX)
    2010年1月16日 8:01

答案

  • 找到原因了,object.focus();引起的,执行一个函数中,每一个控件都执行了focus事件。当不满足条件时浏览器循环为多个控件执行focus事件,形成了假死状态。
    • 已标记为答案 jinwb1982 2010年1月16日 13:29
    2010年1月16日 13:29

全部回复

  • <input class="newinput-1" type="text" maxlength="30"  onblur="nickNameResult(this);"
                                    size="32" id="nickname" runat="server" />
    2010年1月16日 8:22
  • <input class="newinput-1" type="text" maxlength="30"  onblur="nickNameResult(this);"
                                    size="32" id="nickname" runat="server" />

    也不行,试过
    2010年1月16日 8:45
  • 我怀疑问题出在 function $(){return document.getElementById(arguments[0]) || false ;}这句中,我的每一个function函数下面都应用类似于$('控件ID')这样的写法。却发现一个问题,如果有一个控件引用这样的写法的话,是可以的,如果另加一个function函数,引用类似写法就会出问题,不知道应该如何解决?
    2010年1月16日 8:47
  • parten 变量哪定义的?

    【孟子E章】
    2010年1月16日 12:55
    版主
  • 找到原因了,object.focus();引起的,执行一个函数中,每一个控件都执行了focus事件。当不满足条件时浏览器循环为多个控件执行focus事件,形成了假死状态。
    • 已标记为答案 jinwb1982 2010年1月16日 13:29
    2010年1月16日 13:29
  • object.focus();应该不会导致你的问题,除非你的代码写的不好
    【孟子E章】
    2010年1月17日 0:00
    版主