我无法找到一种方法来有条件地取消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来做回发,如果我可以帮助它。
有没有人有更好的解决方案?我非常感谢你能给予的任何帮助。
答案 0 :(得分:4)
您总是返回,因此永远不会调用回发。如果函数返回false,则只应返回false(取消事件)...
onchange="if(!DoMyCheck()) return false; setTimeout('__doPostBack(\'tb1\',\'\')', 0)"