Visualizzazione dei risultati da 1 a 4 su 4

Discussione: select multipla

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    236

    select multipla

    ho due select multiple(PROVA e PROVA1).Inizialmente PROVA contiene un certo numero di opzioni che tramite un carto bottone AGGIUNGI possono essere inserite nell'altra select PROVA1.

    Quello che non riesco a fare è controllare che non vengano inserite opzioni doppie in PROVA1.

    Vale a dire che se le opzioni sono:

    1000
    1001
    1002
    1003

    e seleziono 1000 e 1002 per aggiungerli in PROVA1, se poi seleziono nuovamente 1000 dovrà comparire un ALERT('OPZIONE GIà INSERITA') e questo sempre, ogni volta che l'utente seleziona una opzione in PROVA...l'utente in teoria potrebbe selezionare la stessa opzione a vita!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    La cosa e` fattibile:

    Ogni volta che devi inserire una opzione, fai prima il controllo facendo un loop su tutte le opzioni presenti nella PROVA1.

    Come sai (perche` lo usi gia`), le opzioni sono inserite in un vettore, che a sua volta e` un oggetto che contiene le proprieta` value e text. Puoi fare il confronto indifferente sull'una o sull'altra proprieta`.

    Se ho parlato in modo incomprensibile posta il codice: qualcuno qui e` in grado di aiutarti a risolvere.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    236

    codice

    HO PROVATO A FARE COME DICI TU: ora ti mando il codice che ho scritto, ma nell'esempio che ti ho citato sbaglia perchè ho fatto un ciclo for e una volta foinito il ciclo ovviamente non fa il controllo!

    Puoi aiutarmi?


    function aggiungi_alla_query() {
    var text;
    var trov;
    var select = document.Dati.prova;
    var query = document.Dati.prova1;
    for (i = 0; i<select.options.length; i++) {
    if (select.options[i].selected) {
    if (query.options.length==0) {
    trov=false;
    } else {
    for (j=0;j<query.options.length;j++) {
    if (query.options[j].text == select.options[i].text) {
    trov=true;
    } else {
    trov=false;
    }
    }
    }
    if (trov==false) {
    text = select.options[i].text;
    if (text.length > 0) {
    var option = new Option(text);
    query.options[query.options.length] = option;
    }
    select.options[i].selected = false;
    } else {
    alert(select.options[i].text + ': già inserito!');
    select.options[i].selected = false;
    document.Dati.prova.focus();
    }
    }
    }

    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Io farei una subroutine diversa per l'inserimento (questo perche` renderebbe il coidce un po' piu` pulito), ma non e` questo il punto.

    Vediamo questo pezzo:
    codice:
    for (j=0;j<query.options.length;j++) {
      if (query.options[j].text == select.options[i].text) {
        trov=true;
      } else {
        trov=false;
      }
    }
    Ogni volta setti a true o false la variabile.

    Invece devi settare a true la variabile solo se c'e` un'uguaglianza, mentre se non c'e` lasciare come era stato settato prima.
    Inoltre non ha senso continuare il loop una volta trovata l'uguaglianza:
    codice:
    for (j=0;j<query.options.length;j++) {
      if (query.options[j].text == select.options[i].text) {
        trov=true;
        break;
      } 
    }
    Vedrai che cosi` la cosa cambia.

    PS. quando posti il codice, inseriscilo tra i tag [co de] e [/co de] (senza gli spazi) in modo che l'indentazione venga preservata.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.