使用Javascript OnChange事件有条件地取消文本框上的AutoPostBack

时间:2009-07-09 14:32:28

标签: .net javascript

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

我在客户端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来做回发,如果我可以帮助它。

有没有人有更好的解决方案?我非常感谢你能给予的任何帮助。

1 个答案:

答案 0 :(得分:4)

您总是返回,因此永远不会调用回发。如果函数返回false,则只应返回false(取消事件)...

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