[英]How to stop onchange Event while i am submiting the form
我有一個javascript函數正在調用文本框的onChange事件,函數名稱為callOnChange(),而我的文本框就像
<asp:TextBox ID="TextBox1" runat="server" onChange="callOnChange(this)"></asp:TextBox>
而且我還有一個提交按鈕,但是當我單擊按鈕時,先調用onchage事件然后提交事件不起作用
那么如何處理呢???
我不想在單擊“提交”按鈕時調用“ onChange”
編輯
實際上我只是在上述問題中給出了示例。 但是我有一系列的文本框,我正在其中驗證日期。 每個文本框的日期必須大於其上方的文本框的日期,然后大於下方的文本框的日期,否則它將保持禁用狀態。 因此這里的keypress或keydown事件將不是很有用。
當元素失去焦點(並且值已更改)時,會觸發onchange
。 這是預期的行為。
也許您想要一個不同的事件,例如onkeyup
?
據我所知,沒有一種優雅的方法,但是簡單的方法是使用全局計時器延遲事件,然后單擊“提交”按鈕將清除該計時器。
為此,首先聲明全局變量:
<script type="text/javascript">
var textbox_changeTimer = 0;
function callOnChange(sender) {
//...
}
<script>
現在為文本框提供以下代碼:
<asp:TextBox ID="TextBox2" runat="server" onchange="textbox_changeTimer = window.setTimeout(function() { callOnChange(this); }, 100);"></asp:TextBox>
最后是這樣的提交按鈕:
<asp:Button runat="server" Text="submit" OnClientClick="window.clearTimeout(textbox_changeTimer);" />
單擊按鈕時,這將取消onchange事件。 如果您有多個提交按鈕,或者想要一些更精美的代碼,則可以將這些事件掛接到客戶端代碼中,遍歷所有按鈕,但這並不重要。
您可以像Shadow Wizard所說的那樣避免更改事件。 請記住,如果您在更改中顯示了alert("message")
,則將取消click事件。 之后,刪除alert("message")
嘗試console.log("message")
查看事件。 (Chrome中的ctrl + shift + j可打開JavaScript控制台)。
試試這個 jsfiddle(不是我的!)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.