Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problema di and logico e controllo form con javascript

    Ciao a tutti!

    sono una neo programmatrice java che tenta di cimentarsi col javascrip.

    Sto creando un sito dinamico ma ho un problema con la validazione dei campi di 1 form. Dunque, il form riguarda le news, il client può settare una data di pubblicazione (per indicare quando la news andrà on-line), un campo di fine pubblicazione (per indicare quando questa andrà off-line) e un campo di stato (dove appunto con una select si sceglie tra online e offline ---> ovvero tra 1 e 0);

    In sostanza devo verificare che se l'utente mette lo stato a 1(online) la data odierna debba essere compresa(o uguale)tra quella di pubblicazione e quella di fine pubblicazione e viceversa...insomma devo controllare che le cose tra di loro non cozzino!

    La funzione originale è:

    <SCRIPT LANGUAGE="JavaScript1.2">
    function controllaData(){

    //data di oggi
    var oggi = new Date();
    var data = "";
    var giorno=oggi.getDate()<10?"0"+oggi.getDate()ggi.getDate();
    var mese=(oggi.getMonth()+1)<10?"0"+(oggi.getMonth()+1 )oggi.getMonth()+1);
    var anno=oggi.getFullYear();

    //stato
    var stato=document.mioform.stato.value;

    //data pubblicazione
    var dataPubblicazione=document.mioform.dataPubblicazio ne.value;
    var dataPubblicazioneGG=dataPubblicazione.slice(0,2);
    var dataPubblicazioneMM=dataPubblicazione.slice(3,5);
    var dataPubblicazioneAAAA=dataPubblicazione.slice(6,10 );

    //data fine pubblicazione
    var dataFinePubblicazione=document.mioform.dataFinePub blicazione.value;

    //controllo sullo stato
    if (stato=="0"){

    //la data di fine pubb è facoltativa
    if (dataFinePubblicazione!=""){
    var dataFinePubblicazioneGG=dataFinePubblicazione.slic e(0,2);
    var dataFinePubblicazioneMM=dataFinePubblicazione.slic e(3,5);
    var dataFinePubblicazioneAAAA=dataFinePubblicazione.sl ice(6,10);

    if(dataPubblicazioneAAAA<=anno)&&(anno<=dataFinePu bblicazioneAAAA){
    if(dataPubblicazioneMM <= mese)&&(mese <= dataFinePubblicazioneMM){
    if(dataPubblicazioneGG<=giorno)&&(giorno<=dataFine PubblicazioneGG){

    window:alert("Attenzione, le date indicano che la news dovrebbe essere on-line, ma lo stato è settato off-line! Cambiare una delle due cose.");

    }}}
    }else{
    if(dataPubblicazioneAAAA <= anno){
    if(dataPubblicazioneMM <= mese){
    if(dataPubblicazioneGG <= giorno){

    window:alert("Attenzione, le date indicano che la news dovrebbe essere on-line, ma lo stato è settato off-line! Cambiare una delle due cose.");

    }}}

    }
    }else{

    if (dataFinePubblicazione!=""){
    var dataFinePubblicazioneGG=dataFinePubblicazione.slic e(0,2);
    var dataFinePubblicazioneMM=dataFinePubblicazione.slic e(3,5);
    var dataFinePubblicazioneAAAA=dataFinePubblicazione.sl ice(6,10);

    if(dataPubblicazioneAAAA > anno)||(anno > dataFinePubblicazioneAAAA){
    if(dataPubblicazioneMM > mese)||(mese > dataFinePubblicazioneMM){
    if(dataPubblicazioneGG > giorno)||(giorno > dataFinePubblicazioneGG){

    alert("Attenzione, le date indicano che la news dovrebbe essere off-line, ma lo stato è settato on-line! Cambiare una delle due cose.")

    }}}
    }else{
    if(dataPubblicazioneAAAA > anno){
    if(dataPubblicazioneMM > mese){
    if(dataPubblicazioneGG > giorno){

    alert("Attenzione, le date indicano che la news dovrebbe essere off-line, ma lo stato è settato on-line! Cambiare una delle due cose.")

    }}}

    }}}
    </SCRIPT>

    Ricreandolo poi passo per passo mi sono accorta che si blocca all'altezza del primo and logico.... :master:

    Grazie mille in anticipo dell'aiuto.

    Daria
    Realizzazione siti web
    ____________________________
    how terrible thing is knowledge when it brings no profit to the wise...

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Anzitutto un errore nella valorizzazione della select:
    //stato
    var stato = document.mioform.stato.options[document.mioform.stato.selectedIndex].value;


    Poi hai fatto tutto un sistema per il confronto delle date, che non regge bene: ci sono metodi molto piu` semplici con l'uso dell'oggetto Date().
    Potresti trovare che dicembre viene prima di aprile
    (infatti "11" < "3" - confronto alfabetico)
    Quegli .slice() che usi, sarebbero meglio sostituiti da .split().

    Nel tuo if comunque manca una parentesi tonda. La parentesi nell'if fa parte della sintassi in JS (a differenza di VBS).
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    grazie non appena riesco provo le modifiche e posto il risultato

    lo so che devo aver fatto molto per nulla, ma purtroppo ragiono in java

    grazie ancora
    Realizzazione siti web
    ____________________________
    how terrible thing is knowledge when it brings no profit to the wise...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.