aiutoooo!!!!
salve a tutti. sto cercando di creare un formulario per un noleggio dove devono inserire la data d'inizio e la data finale e devo calcolare la differenza di giorni (giorni di noleggio). ho adattato un script trovato sulla rete il quale funziona a meta cioè lo script funziona, pero solo una volta vi spiego quello che ho fatto
ho creato nella preview 4 campi
datetime picker1
text field= data inizio
name field= data_inizio
field class = d1
datetime picker2
text field= data fine
name field= data_fine
field class = d2
text field= Giorni (con questo campo recupero la differenza di giorni delle due date)
name field= giorni
field class = giorni
submit buton
button type = regular button
text = calcola giorni
nella tab events ho inserito un LOAD JS col seguente codice:
jQuery.noConflict();
function controllo_data(stringa){
var espressione = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;
if (!espressione.test(stringa))
{
return false;
}else{
anno = parseInt(stringa.substr(6),10);
mese = parseInt(stringa.substr(3, 2),10);
giorno = parseInt(stringa.substr(0, 2),10);
var data=new Date(anno, mese-1, giorno);
if(data.getFullYear()==anno && data.getMonth()+1==mese && data.getDate()==giorno){
return true;
}else{
return false;
}
}
}
function confronta_data(data1, data2){
data1str = data1.substr(6)+data1.substr(3, 2)+data1.substr(0, 2);
data2str = data2.substr(6)+data2.substr(3, 2)+data2.substr(0, 2);
if (data2str-data1str<0) {
return false;
}else{
return true;
}
}
function giorni_differenza(form){
var data1 = form.elements['data_inizio'].value;
var data2 = form.elements['data_fine'].value;
if(!controllo_data(data1) || !controllo_data(data2)){
alert('Inserire le date nel formato gg/mm/aaaa');
return -1;
}
if(!confronta_data(data1,data2)){
alert('La data di inizio deve essere precedente quella di fine');
return -1;
}
anno1 = parseInt(data1.substr(6),10);
mese1 = parseInt(data1.substr(3, 2),10);
giorno1 = parseInt(data1.substr(0, 2),10);
anno2 = parseInt(data2.substr(6),10);
mese2 = parseInt(data2.substr(3, 2),10);
giorno2 = parseInt(data2.substr(0, 2),10);
var dataok1=new Date(anno1, mese1-1, giorno1);
var dataok2=new Date(anno2, mese2-1, giorno2);
differenza = dataok2-dataok1;
giorni_differenza = new String(differenza/86400000);
form.elements['giorni'].value = giorni_differenza;
return giorni_differenza;
}
poi due custom datepicker collegati respettivamente ai datetime picker1 data inizio e datetime picker2 data fine. e per finire il show html
salvo ed esco per poi andare sul code del formulario per inserire gli eventi javascript nei tag. questo e il codice generato io solo aggiungo Onclick="giorni_differenza(this.form);" per eseguire il javascript del onload js
<div class="ccms_form_element cfdiv_datetime" id="data_inizio1_container_div" style=""><label>Data inizio</label><input maxlength="150" size="16" class="d1 cf_date_picker" title="" type="text" value="" name="data_inizio" />
<div class="clear"><><div id="error-message-data_inizio"><><><div class="ccms_form_element cfdiv_datetime" id="data_fine1_container_div" style=""><label>Data Fine</label><input maxlength="150" size="16" class="d2 cf_date_picker" title="" type="text" value="" name="data_fine" />
<div class="clear"><><div id="error-message-data_fine"><><><div class="ccms_form_element cfdiv_text" id="giorni1_container_div" style=""><label>Giorni</label><input maxlength="150" size="30" class="" title="" type="text" value="" name="giorni" />
<div class="clear"><><div id="error-message-giorni"><><><div class="ccms_form_element cfdiv_submit" id="id1_container_div" style="text-align:left"><input name="" class="" value="Calcola Giorni" type="button" Onclick="giorni_differenza(this.form);" />
<div class="clear"><><div id="error-message-"><><><div class="ccms_form_element cfdiv_empty" id="empty_container_div" style=""><div class="clear"><><div id="error-message-empty">
allora vi elenco i problemmi:
1.-il codice javascript viene eseguito solo una volta.
2.-qualsiasi modifica che faccio sul preview mi cancella il Onclick="giorni_differenza(this.form);" e tutti possibili altri richiammi.
domando:che un altro modo per fare la stessa operazione senza dover creare il bottone calcola giorni? visto che ho provato a inserire il evento onchange su tutte due i campi datetime picker1 e datetime picker2 pero vano in conflitto col javascript del custom datapicker.
aiutatemi per piacere sono gia due giorni che sono fermo a questo punto se volette vi allego anche il form.
grazie mille.
[allegato eliminato automaticamente dopo un anno]