我知道類似的問題之前已經發布,但我沒有看到一個與下面的一些要求。使用jQuery禁用按鈕,同時仍然發射服務器端事件
在我的標記中,我有一個包含輸入字段和ASP.NET按鈕的div。 該按鈕有一個服務器端的OnClick事件處理程序,它會執行一些其他操作。工作。
這裏的標記:
<div id="contactForm">
<input type="text" id="email" runat="server" class="email" name="Email" placeholder="Email *" />
<asp:Button ID="plhButton" class="submit-btn" runat="server" OnClick="Submit_Click" Text="Request Information" />
</div>
和事件處理程序:
protected void Submit_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
EmailPost();
//Do other stuff
}
}
我還想以下:
- 禁用鍵4秒
- 變化按鈕文本禁用
- 還原按鈕文本它重新啓用後
- 檢查驗證
這是我的腳本來處理:
<script>
jQuery(document).ready(function ($) {
var fewSeconds = 4;
$(".submit-btn").click(function() {
if (Page_ClientValidate()) {
var btn = $(this);
btn.prop('disabled', true);
setTimeout(function() {
btn.prop('disabled', false);
btn.prop('value', 'Request Information');
}, fewSeconds * 1000);
btn.prop('value', 'Sending...');
}
});
});
</script>
這一切工作正常,除了禁用按鈕阻止我服務器端事件發生。 所以,我添加UseSubmitBehavior =「假」給我的按鈕:
<asp:Button ID="plhButton" class="submit-btn" runat="server" OnClick="Submit_Click" Text="Request Information" UseSubmitBehavior="false" />
現在,服務器端事件觸發正常,但代碼中的腳本內(即,禁用按鈕,切換按鈕上的文字)只在第一次點擊按鈕時運行..
任何想法如何使腳本代碼運行更多一次?
你不提交表單所以JavaScript代碼是無用的,因爲只要在頁面提交所有的代碼停止運行。 – epascarello
嘗試在您的服務器端代碼中使用腳本管理器 –
@epascarello好點!我已經用'pageLoad()'函數替換了'$(document).ready',它現在似乎正在工作。感謝您指點我在正確的方向:) – mustang888