2013-11-21 24 views
1

我有以下的提交按钮上的所有我的asp.net web应用程序,创建或编辑记录: -如何禁用特定类下一个提交按钮即

<input type="submit" value="Save" class="btn btn-primary"/> 

但我需要写一个jQuery在用户点击它时禁用按钮(以避免连续的API调用到外部系统)。所以我写了这段代码,但按钮一旦点击就不会被禁用。

$(".btn btn-primary").click(function() { 
      $("input[type=submit]").attr("disabled", "disabled"); 
      $("input[type=submit]").css("background-color", "grey"); 
     }); 

第二个问题,其方法,我应该遵循,柜面我需要重新启用该按钮柜面模型状态发生错误,点击提交按钮后。任何人都可以建议,请

回答

1

试试这个:

$(".btn.btn-primary").click(function() { 
    $("input[type=submit]").attr("disabled", "disabled"); 
    $("input[type=submit]").css("background-color", "grey"); 
    return false; 
}); 
+0

这将覆盖我的第一个要求,一旦点击就禁用提交按钮。但是如果用户点击提交按钮,然后出现客户端验证错误(例如缺少必填字段),那么即使用户更正了客户端验证错误,按钮也将保持禁用状态。 –

0
$(".btn.btn-primary").click(function() { 
    $(this).attr('disabled','disabled'); 
} 
1

你的选择是错误的

$(".btn.btn-primary").click(function() { 
    $(this).prop("disabled", "disabled").css("background-color", "grey"); 
}); 


this

+0

但是如果用户点击提交按钮,然后发生客户端验证错误(例如缺少必填字段),在这种情况下,即使用户更正了客户端验证错误,该按钮也将保持禁用状态。你能建议吗 –

+0

@JohnJohn你使用jQuery验证? –

+0

是jQuery验证,使用asp.net mvc的数据标注在jQuery的验证'submitHandler –

1

改变这种

$(".btn btn-primary").click(function() { 
      $("input[type=submit]").attr("disabled", "disabled"); 
      $("input[type=submit]").css("background-color", "grey"); 
     }); 

$(".btn .btn-primary").click(function (e) { 

       $(this).attr({disabled:true}); 
       $("input[type=submit]").css("background-color", "grey"); 
      }); 
0

尝试在稍后阶段使用

$(".btn.btn-primary").click(function() { 
     $(this).attr("disabled", "disabled") 
       .css("background-color", "grey"); 
     e.preventDefault(); 

    }); 
0

要重新启用

$("input[type=submit]").removeAttr("disabled"); 
+0

但是我怎么能定义,以防万一表单返回错误(客户端)后,用户点击提交按钮,重新启用按钮? –

1

无上述取溶液的考虑是否形式提交是成功的。如果用户忘记填写所需的字段会怎么样?她会收到一条错误消息,尝试纠正错误,然后发现她无法重新提交表单。即使你解决了这个问题,一旦用户刷新页面,她可以再次提交。

表单的目的是什么?例如,如果它是一个注册表单,那么一旦输入了电子邮件地址,它会检查数据库中的电子邮件地址并阻止用户尝试注册两次相同的电子邮件地址,我只是简单地触发Ajax方法。另一方面,如果您正在进行调查,并且希望阻止来自同一用户的多次提交,我会创建一个cookie。在DOM准备就绪后,你的脚本会查找cookie。如果cookie存在,则不要显示表单。

+0

表单的目的是创建新资产并编辑现有资产,并且某些表单具有大约25个字段。你是对的上面的答案都没有考虑到表单提交是否成功或者是否发生了客户端验证错误。这是我主要关心的问题。 –

+0

@john john - 您绝对可以使用禁用提交的技术。我只是将我在表单处理程序中提到的一些想法合并到一起,以便在您确定这是正确的操作过程之后才这样做。 –

+0

你能否解释一下你的观点? –