我正在创建注册页面并使用jquery在提交按钮单击时进行空字段验证。如果表单验证中有任何错误,那么我使用jquery阻止默认方法调用,因此它不会调用按钮点击事件后面的代码。
问题: 有时用户双击按钮,这是在按钮点击事件后面调用代码两次,两个数据库行插入具有相同的数据。
我尝试了很多解决方案,但不幸的是我无法取得任何成功。 如果您有任何解决方案,请帮我解决这个问题。
提前致谢,
答案 0 :(得分:1)
实际上,如果验证为false,则在使用jquery的e.PreventDefault()方法单击按钮时,我在jquery中阻止了默认服务器端方法调用。 不知道是什么问题,但是当我在客户端点击按钮设置功能并根据验证而不是e.PreventDefault返回true / false时,技巧对我来说很有用。
感谢所有评论此问题的人。
答案 1 :(得分:0)
在客户端使用one
。这样可以防止双击。
$("#button").one("click", function() {
// validate the form.
// if form is valid, submit form
});
另一种解决方案是使用布尔标志。
var submitting = false;
$("#button").click(function() {
if (!submitting) {
submitting = true;
if (formIsValid) {
submitting = false;
$("#form").submit();
} else {
submitting = false;
}
}
});
答案 2 :(得分:0)
只需添加一个名为'loading'的变量,并检查ajax调用是否正忙:
代码顶部:
var loading = false;
然后在表单提交:
$('#form').submit() {
if(loading)
return false;
loading = true;
//Ajax call
$.ajax({
type: "POST",
url: "somePage.php",
data: $('#form').serialize(),
success: function(response) {
loading = false;
//Your response code
}
});
}
答案 3 :(得分:0)
试试这可能有助于你的asp按钮
<asp:Button runat="server" ID="btnSubmit" Text="Submit" OnClick="btnSubmit_Click" UseSubmitBehavior="false" OnClientClick="ValidationCode(event); return false;" />
<script>
function ValidationCode()
{
//Code of validtion
event.preventDefault();
if(true)
{
__dopostback:("btnSubmit","");
}
}
</script>
答案 4 :(得分:0)
将禁用的属性添加到按钮中作为js方法中的第一件事。
function func(event){
$("#button").prop("disabled", true);
..... }
答案 5 :(得分:0)
示例代码
客户端:
$("#submit").click(function () {
if (!YourvalidationFunction)
{
return false;
}
else {
//ajax_function is a folder contain Default.asmx page and insertNewRecord is function name (server side)
$.ajax({
type: "POST",
url: "ajax_function/Default.asmx/insertNewRecord",
data: "{ 'prefix': '" + dataString + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccessinsertingwcCall,
error: OnErrorCall
});
}
});
服务器端:
[WebMethod]
public string[] insertNewRecord(string prefix)
{
string status = "";
List<string> d = new List<string>();
try
{
// logic code for insertion if success set msg
status = "New record inserted";
}
catch (Exception ac)
{
status = " Error occurs";
}
d.Add(string.Format("{0}", status));
return d.ToArray();
}