我在页面中使用了boxy jQuery插件,在clickEvent上显示了一个表单,用于fullCalendar插件。 它工作正常,我唯一的问题是,在第一次打开对话框时,方框中的窗体会显示确认对话框,当用户点击“确定”时,它会第二次提交表单,在我的网站上生成2个事件日历和我数据库中的2个条目。
我的代码在fullCalendar中看起来像这样:
dayClick: function(date, allDay, jsEvent, view) {
var day=""+date.getDate();
if(day.length==1){
day="0"+day;
}
var year=date.getFullYear();
var month=date.getMonth()+1;
var month=""+month;
if(month.length==1){
month="0"+month;
}
var defaultdate=""+year+"-"+month+"-"+day+" 00:00:00";
var ele = document.getElementById("myform");
new Boxy(ele,{title: "Add Task", modal: true});
document.getElementById("title").value="";
document.getElementById("description").value="";
document.getElementById("startdate").value=""+defaultdate;
document.getElementById("enddate").value=""+defaultdate;
}
我还在表单字段上使用验证器:
$.validator.addMethod(
"datetime",
function(value, element) {
// put your own logic here, this is just a (crappy) example
return value.match(/^([0-9]{4})-([0-1][0-9])-([0-3][0-9])\s([0-1][0-9]|[2][0-3]):([0-5][0-9]):([0-5][0-9])$/);
},
"Please enter a date in the format YYYY-mm-dd hh:MM:ss"
);
var validator=$("#myform").validate({
onsubmit:true,
rules: {
title: {
required: true
},
startdate: {
required: true,
datetime: true
},
enddate: {
required: true,
datetime: true
}
},
submitHandler: function(form) {
//this function renders a new event and makes a call to a php script that inserts it into the db
addTask(form);
}
});
表格如下:
<form id ='myform'>
<table border='1' width='100%'>
<tr><td align='right'>Title:</td><td align='left'><input id='title' name='title' size='30'/></td></tr>
<tr><td align='right'>Description:</td><td align='left'><textarea id='description' name='description' rows='4' cols='30'></textarea></td></tr>
<tr><td align='right'>Start Date:</td><td align='left'><input id='startdate' name='startdate' size='30'/></td></tr>
<tr><td align='right'>End Date:</td><td align='left'><input id='enddate' name='enddate' size='30' /></td></tr>
<tr><td colspan='2' align='right'><input type='submit' value='Add' /></td></tr>
</table>
</form>
答案 0 :(得分:0)
好的时间我只需删除boxy.js中的确认对话框就可以使用“脏修复”,这样在调用它时函数不会执行任何操作。不漂亮,但它现在有效。