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

标签 .net javascript

我在想出一种使用 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/

相关文章:

.net - WCF - 基于消息的安全和 SSL 加速器

javascript - 设置 textContent 时如何获得 CR/LF?

javascript - 将查询参数从 AJAX get 调用传递到快速路由

c# - 使用c#模拟mysql压缩功能

.net - TableAdapter 向导未生成 INSERT 方法 - UPDATE 和 DELETE 正常

c# - 使用 TagLibSharp 读取 APEv2 mp3 标签?

.net - 验证 DataTable 是否已排序

javascript - 如何在单击复选框时禁用文本区域?

javascript - AngularJS 多个 url 参数 (ui-router)

javascript - 如何在 Bootstrap 5 中使用 JavaScript 初始化 toast?