目前正在使用UserControls。
有这个按钮:
<dx:ASPxButton ID="btnSave" runat="server" Text="Save" CssClass="btn btn-active" ValidationGroup="MyValidationGroup" OnClick="BtnSaveClick">
我从队友那里继承了这段代码。
最近我发现如果多次点击按钮,它会重复记录。
我尝试添加
btnSave.ClientEnabled = false;
和
btnSave.Enabled = false;
进入后面的代码,但它不能防止重复记录。
如何检查验证组是否(成功)传递到jquery或javascript,而不是禁用前端的按钮?
有什么想法吗?
答案 0 :(得分:1)
你可以这样做$(文件).ready(function(){
$('#ctl00_MainContent_btnSave')
.attr("onclick", null)
.removeAttr("onclick")
.click(function() {
// To validate you form using Validation group.
if (typeof (Page_ClientValidate) == 'function') {
Page_ClientValidate("ValidationGroup");
if (Page_IsValid == true) {
alert('the form is valid');
}
} else {
if ($(this).valid()) {
alert('the form is valid');
}
}
//Disable button before page posting back
WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions($(this).attr("name"), "", true, "", "", false, false));
});
});
答案 1 :(得分:1)
如果您不想要重复,为什么不在数据库级别检查它们?禁用按钮有助于双击。但是,如果用户按下F5或将页面重新加载为新页面然后再次按下该按钮,您仍将获得相同的结果。
对于MS SQL,你可以这样做:
IF NOT EXISTS (SELECT column FROM table WHERE (column = @myVar))
INSERT INTO table (column) VALUES (@myVar)
或者您也可以在列上放置约束
ALTER TABLE table ADD CONSTRAINT UQ_column UNIQUE (column)
答案 2 :(得分:1)
简单地使用
<asp:Button ID="btnSave" runat="server" class="btn btn-active" OnClick="btnSave_Click" ValidationGroup="validation" Text="Save" OnClientClick="if (!Page_ClientValidate()){ return false; } this.disabled = true; this.value = 'Saving...';"
UseSubmitBehavior="false" />
此代码段将禁用您的按钮,并且不允许多次单击直到执行其代码的click事件 希望这会有所帮助:)
答案 3 :(得分:0)
我明白了。当我使用代码@Shayan Hafeez提供时,编译器抛出异常。
The server tag is not well formed.
然后,我从按钮中删除了OnClientClick并将此代码插入代码隐藏:
btnSave.ClientSideEvents.Click = "if (!Page_ClientValidate()){ return false; } this.disabled = true; this.value = 'Saving...';";
现在工作正常。