OnChange on textbox事件调用两次

时间:2012-06-18 11:48:33

标签: javascript jquery asp.net

我正在使用jQuery动态添加onchange事件。当我更改文本框时,事件发生两次,两次警报框有时会发生3次。

if(Country.toUpperCase().indexOf("MALAYSIA")!=-1)
{    debugger;
    if(productDesc.toUpperCase().indexOf("SV")!=-1)
    {                   
        $("#<%=txtlAxis.ClientID%>").change(function()
        {         
                if(productDesc.toUpperCase().indexOf("SV")!=-1)
                {                           
                alert('2');
                }
        });  
    }
}

3 个答案:

答案 0 :(得分:1)

你可以在这段代码中使用unbind吗?

if(Country.toUpperCase().indexOf("MALAYSIA")!=-1)
   {  
        if(productDesc.toUpperCase().indexOf("SV")!=-1)
        {       
            $("#<%=txtlAxis.ClientID%>").unbind();
            $("#<%=txtlAxis.ClientID%>").change(function()
            {         
                 if(productDesc.toUpperCase().indexOf("SV")!=-1)
                 {                           
                    alert('2');
                 }
            });  
        }
   }

答案 1 :(得分:0)

请尝试以下操作。 Unbind OnChange事件,并在运行中再次添加。

if(Country.toUpperCase().indexOf("MALAYSIA")!=-1)
{    
    if(productDesc.toUpperCase().indexOf("SV")!=-1)
    {      
        $('.txtlAxisClass').attr("onchange", "");             
        $("#<%=txtlAxis.ClientID%>").change(function()
        {         
             if(productDesc.toUpperCase().indexOf("SV")!=-1)
             {                           
                alert('2');
             }
        });  
    }
}

您也是Downgrading the Performance再次重新评估下面提到的表达式。所以把它保存在变量中。

productDesc.toUpperCase().indexOf("SV")

答案 2 :(得分:0)

固定。非常感谢你的回复。 MMK unbind()是正确的。我还使用了Kanavi的.attr(“onchange”,“”),但没有使用。检查IE8和CROME。

是Kanavi,我将把它变成一个变量thx for u r suggesion。 StackOverflow ROCKS。

       if(Country.toUpperCase().indexOf("MALAYSIA")!=-1)
       {    
            if(productDesc.toUpperCase().indexOf("SV")!=-1)
            {                  
                $(".clstxtlAxis").unbind("change"); 
                $(".clstxtlAxis").change(function()
                {             
                     if(productDesc.toUpperCase().indexOf("SV")!=-1)
                     {
                        alert("2");                                                   
                     }
                }); 
             }
        }