我如何防止asp.net中的方法调用后面的代码

时间:2013-06-27 10:35:02

标签: c# jquery asp.net

我正在创建注册页面并使用jquery在提交按钮单击时进行空字段验证。如果表单验证中有任何错误,那么我使用jquery阻止默认方法调用,因此它不会调用按钮点击事件后面的代码。

问题: 有时用户双击按钮,这是在按钮点击事件后面调用代码两次,两个数据库行插入具有相同的数据。

我尝试了很多解决方案,但不幸的是我无法取得任何成功。 如果您有任何解决方案,请帮我解决这个问题。

提前致谢,

6 个答案:

答案 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();
 }