我在想出一种使用 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,则取消回发。显然,无论如何它每次都会取消。请记住,我简化了长 .NET ID,并且当我设置 AutoPostBack = true 时自动生成了 setTimeout() 和 OnKeyPress() 内容。我真正放入其中的唯一代码是 onchange 事件。
我看到这里发布了一个解决方案:http://www.eggheadcafe.com/community/aspnet/3/10042963/try-this.aspx
但这在我看来是 Not Acceptable ,因为如果可以的话,我不想手动挂接到内部 .NET javascript 来执行回发。
有没有人有更好的解决方案?非常感谢您提供的任何帮助。
最佳答案
您总是在返回,因此永远不会调用回发。如果您的函数返回 false,您应该只返回 false(取消事件)...
onchange="if(!DoMyCheck()) return false; setTimeout('__doPostBack(\'tb1\',\'\')', 0)"
关于.net - 使用 Javascript OnChange 事件有条件地取消文本框上的 AutoPostBack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1104258/