2010-04-14 8 views
0

J'utilise le plugin boxy jQuery dans ma page pour afficher un formulaire sur un clickEvent pour le plugin fullCalendar. Cela fonctionne bien, le seul problème que j'ai est que le formulaire dans boxy affiche le dialogue de confirmation la première fois que le dialogue est ouvert et quand l'utilisateur clique sur "OK" il soumet le formulaire une deuxième fois qui génère 2 événements sur mon calendrier et 2 entrées dans ma base de données.Boxy Soumettre le formulaire

Mon code ressemble à ceci à l'intérieur 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; 

} 

J'utilise aussi valideurs sur les champs de formulaires:

$.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); 
    }  
    }); 

Et la forme ressemble à ceci:

<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> 

Répondre

0

bien pour le moment j'utilise un "correctif sale" en supprimant simplement le dialogue de confirmation dans le boxy.js pour que le f l'onction ne fait rien quand elle est appelée. Pas joli mais ça marche pour le moment.