【问题标题】:Is there any chance to get a button with double clicked after disabling it with one click?是否有机会在单击禁用按钮后双击按钮?
【发布时间】:2016-06-28 10:10:30
【问题描述】:

对我的 html 页面中的按钮点击感到非常困惑。我为我的按钮 ID 设置了一个函数以避免双击。双击会导致我的数据库中出现重复条目​​。到目前为止它工作正常。但今天我又得到了一个在我的数据库中重复输入。我无法找到出现此问题的原因。我的 java 类和 jquery 也没有错误。请帮助我找到解决方案。提前感谢所有帮助。

My jquery code is:
 $(function()
  {
  $('#timesheetForm').submit(function(){
  $("input[type='submit']", this).val("Please Wait...")
  .attr('disabled', 'disabled');
  setTimeout('$("#btnSubmitInTimesheet").removeAttr("disabled")', 1500);
  $("input[type='submit']", this).val("Submit")
  return true;
 });
}); 

Java 方法:

    public static Result save(Long storeId) {
    System.out.println("inside save method===========");
    Store store = Store.find.byId(storeId);

    Long empId = Long.parseLong(form().bindFromRequest().get("empid"));
    String startDate = form().bindFromRequest().get("date");
    String endDate = form().bindFromRequest().get("endDate");
    String leaveType = form().bindFromRequest().get("leaveType");
    String status = form().bindFromRequest().get("status");

    Employee employee = Employee.find.byId(empId);
    System.out.println("Selected Employee Id is ========" + employee.id);
    String jobTitle = employee.designation;
    String firmType = "STORE";

    if (!leaveType.equals("None")) { // if he selected one leave type

        Timesheet.create(empId, startDate, endDate, leaveType, "0", "0",
                "0", "0", "0:0", jobTitle, firmType, storeId, status);
    } else {
        String startHours = form().bindFromRequest().get("startTimeHour");
        String startMins = form().bindFromRequest().get("startTimeMins");
        String endHours = form().bindFromRequest().get("endTimeHour");
        String endMins = form().bindFromRequest().get("endTimeMins");
        String duration = form().bindFromRequest().get("duration");

        Timesheet.create(empId, startDate, endDate, leaveType, startHours,
                startMins, endHours, endMins, duration, jobTitle, firmType,
                storeId, status);
        System.out.println("employeee saved is=========" + employee);
    }
    System.out.println("Timesheet saved=========");
    return redirect(routes.Timesheets.showBlank(storeId));
}

【问题讨论】:

  • “双击会导致我的数据库出现重复条目​​” - 修复数据库/后端部分。您不应该相信客户端会向您发送正确的数据。
  • 我已经给出了表单验证,他们无法再次提交相同的值。它将检查数据库。
  • 你确定提交事件绑定???仅供参考,您应该使用.prop('disbaled', true); 禁用它,但我不确定这会是一个问题。顺便说一句,不要使用字符串作为 setTimeout 回调,使用匿名函数。现在问题来了,为什么要使用$("#btnSubmitInTimesheet").removeAttr("disabled") 重新启用按钮?为什么有 ID 选择器而不是禁用它?并且不要使用removeAttr,仍然使用.prop()
  • 你能解释一下使用 prop() 禁用按钮的小示例代码吗
  • @dnvsp 怎么样:Are you sure the submit event is bound??? 因为看起来你的问题来自这里,所以提交事件没有被绑定。实际上,您对双基输入的观察可能有很多原因,并且无法对其进行测试,我们只能猜测。顺便说一句,如果你不回答任何问题而是问新问题,它会持续很长时间......

标签: javascript java jquery playframework


【解决方案1】:

您可以尝试禁用提交按钮,使其只能按下一次。

【讨论】:

  • 首先我尝试禁用仅提交时的按钮。我已经更新了代码,你可以在那里看到。之后我尝试点击按钮
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-08
  • 1970-01-01
  • 2011-01-20
  • 1970-01-01
相关资源
最近更新 更多