【发布时间】: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