【问题标题】:Using Javascript OnChange Event to Conditionally Cancel AutoPostBack on Textbox使用 Javascript OnChange 事件有条件地取消文本框上的 AutoPostBack
【发布时间】:2009-07-09 14:32:27
【问题描述】:

我无法找到一种方法来有条件地取消使用 javascript onchange 事件的 asp:TextBox 的 OnTextChanged AutoPostBack。我想这样做是因为我很容易在客户端检查一些条件,这些条件会否定回发的必要性。

我在客户端 HTML 中生成了类似的内容:

<input name="tb1" type="text" onchange="return DoMyCheck(); setTimeout('__doPostBack(\'tb1\',\'\')', 0)" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" id="tb1"/>

<script type='text/javascript'>
    function DoMyCheck()
    {
        if(something)
        {
             return false;
        }else
        {
             return true;
        }
    }
</script>

我认为如果 DoMyCheck() 返回 true 或者如果 DoMyCheck() 返回 false 则取消回发。显然,无论如何它每次都会取消。请记住,当我设置 AutoPostBack = true 时,我简化了长 .NET ID 和 setTimeout() 和 OnKeyPress() 内容。我真正放入的唯一代码是 onchange 事件。

我在这里看到了一个解决方案:http://www.eggheadcafe.com/community/aspnet/3/10042963/try-this.aspx

但这在我看来是不可接受的,因为如果我能提供帮助,我不想手动挂钩到内部 .NET javascript 来执行回发。

有人有更好的解决方案吗?非常感谢您提供的任何帮助。

【问题讨论】:

    标签: .net javascript


    【解决方案1】:

    你总是返回,所以回发永远不会被调用。如果您的函数返回 false,您应该只返回 false(取消事件)...

    onchange="if(!DoMyCheck()) return false; setTimeout('__doPostBack(\'tb1\',\'\')', 0)" 
    

    【讨论】:

    • 你完全正确——不敢相信我错过了!感谢您的帮助。
    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多