Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Modifica Codice

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    49

    Modifica Codice

    Ciao a tutti, sono un paio di gg che impazzisco dietro a questo codice e spero che qualcuno possa aiutarmi.

    In pratica vorrei (ma per adesso non ci sono riuscito) modificare questa funzione "function StateSuggestions()" immettendo automaticamente nomi da un mia SELECT creata con dati prelevati da un DB.
    Purtroppo però non riesco ad inserirli nell'array "this.states = [] ".
    Credo e spero che sia un problema di formattazione della scrittura. Purtroppo ho cercato in tutti i modi conosciuti ma niente (apici, virgolette,ecc).
    I nomi che dovrei inserire prevengono da una SELECT preesistente: listAutore.options[i].text è il comando che usao per prelevare i dati dalla SELECT

    Mi auguro che qualcuno possa aiutarmi, sono fermo da due giorni!!!

    Grazie a tutti per l'eventuale aiuto
    Stefano

    Di seguito il codice incriminato

    --------------------------------

    function StateSuggestions() {
    this.states = [
    "Alabama", "Alaska", "Arizona", "Arkansas",
    "California", "Colorado", "Connecticut",
    "Delaware", "Florida", "Georgia", "Hawaii",
    "Idaho", "Illinois", "Indiana", "Iowa",
    "Kansas", "Kentucky", "Louisiana",
    "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota",
    "Mississippi", "Missouri", "Montana",
    "Nebraska", "Nevada", "New Hampshire", "New Mexico", "New York",
    "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon",
    "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota",
    "Tennessee", "Texas", "Utah", "Vermont", "Virginia",
    "Washington", "West Virginia", "Wisconsin", "Wyoming"
    ];
    }

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    non ho ben capito cosa vuoi fare... potresti postare quello che hai fatto? Tanto per capire cosa vuoi ottenere

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    49
    Si, scusami se non sono stato chiaro (era la mia paura).

    Allora io dovrei valorizzare "this.states = []".
    Sono riuscito a valorizzarlo scrivendo i campi a mano: this.states = ["Pippo","Marco",ecc]
    Quello che vorrei fare io, partendo da una Select o da un array dio inserire automaticamente questi dati.
    Una delle prove che ho fatto è la seguente:

    this.states = ["" + listAutore.options[5].text + "" + "," + "" + listAutore.options[6].text + ""]

    Ho fatto la prova su due dati prelevati da una SELECT esistente ed ho provato ad inserire il tutto in "this.states ". Purtroppo il risultato è il seguente: le due voci vengono inserite unite come unica voce. In questo esempio viene inserito "Pippo,Marco" invece di due voci distinte.
    In realtà l'esempio non è quello che vorrei ottenere però se non inizio da qui non riesco ada andare avanti.
    In poche parole devo valorizzare this.states=[] automaticamente con dati in mio "possesso".

    Spero di essere stato un pò più chiaro e cmq grazie per l'attenzione

    Ciao
    Stefano

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    non mi è ancora chiaro cosa devi ottenere... ma cerca di capire... è lunedì

    io ti faccio un esempio di come potresti popolare l'array
    codice:
    <HTML>
    <HEAD>
    <script type="text/JavaScript">
    function StateSuggestions() {
        this.states = new Array();
    }
    
    function prova(){
    	var obj = new StateSuggestions()
    	obj.states[obj.states.length]=document.NomeForm.listAutore.options[0].text
    	obj.states[obj.states.length]=document.NomeForm.listAutore.options[1].text
    	obj.states[obj.states.length]=document.NomeForm.listAutore.options[2].text
    	for(i=0;i<obj.states.length;i++)
    	  document.getElementById('out').innerHTML+=obj.states[i]+'
    '
    }
    </script>
    </HEAD>
    <BODY onload="prova();">
    <form name="NomeForm">
    <select name="listAutore">
    	<option>valore combo 1</option>
    	<option>valore combo 2</option>
    	<option>valore combo 3</option>
    	<option>valore combo 4</option>
    </select>
    </form>
    <div id="out"></div>
    </BODY>
    </HTML>

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    49
    Grazie per la risposta ma.... mi stò perdendo.

    Parto dal presupposto che stò provando una cosettina con del codice trovato in rete.
    Il mio scopo è cercare parole all'interno di una SELECT o Array attraverso un Input Box.
    Questo perchè devo controllare dei dati: se esistenti li prelieveo altrimenti gli inserisco ex novo.

    Fra l'altro credo che sia un buon codice anche se non riesco a "decifrarlo" completamente.
    Per facilità mia ho copiato il codice di suggestions1.js nel file htm trasformandolo in php.
    Da qui vorrei valorizzare l'array di cui parlavo all'inizio dell'intervento prelevando i dati da un DB.

    Se puoi darmi un'altra mano ne approfitto.
    Ti posto il codice.

    Questo è il file htm "example"

    <html>
    <head>
    <title>Autosuggest Example 1</title>
    <script type="text/javascript" src="autosuggest1.js"></script>
    <script type="text/javascript" src="suggestions1.js"></script>
    <script type="text/javascript">
    window.onload = function () {
    var oTextbox = new AutoSuggestControl(document.getElementById("txt1") , new StateSuggestions());
    }
    </script>

    </head>
    <body>


    This first example simply shows the &quot;type ahead&quot; functionality.
    Type ahead involves placing a single suggestion into the textbox as the user types.
    Only the part that the user didn't type is selected so that the user can
    continue to type and get appropriate suggestions.</p>


    Type a state name into the textbox below. Make sure the state name begins
    with a capital letter. The best example is to type &quot;Missouri&quot; one
    letter at a time. You will get suggestions of &quot;Maine&quot;, &quot;Michigan&quot;,
    &quot;Mississippi&quot;, and then finally &quot;Missouri&quot;.</p>


    Try it for yourself:</p>


    <input type="text" id="txt1" /></p>
    </body>
    </html>

    I due file di appoggio esterni sono:

    autosuggest1.js

    /**
    * An autosuggest textbox control.
    * @class
    * @scope public
    */
    function AutoSuggestControl(oTextbox /*:HTMLInputElement*/,
    oProvider /*:SuggestionProvider*/) {

    /**
    * Suggestion provider for the autosuggest feature.
    * @scope private.
    */
    this.provider /*:SuggestionProvider*/ = oProvider;

    /**
    * The textbox to capture.
    * @scope private
    */
    this.textbox /*:HTMLInputElement*/ = oTextbox;

    //initialize the control
    this.init();

    }

    /**
    * Autosuggests one or more suggestions for what the user has typed.
    * If no suggestions are passed in, then no autosuggest occurs.
    * @scope private
    * @param aSuggestions An array of suggestion strings.
    */
    AutoSuggestControl.prototype.autosuggest = function (aSuggestions /*:Array*/) {

    //make sure there's at least one suggestion
    if (aSuggestions.length > 0) {
    this.typeAhead(aSuggestions[0]);
    }
    };


    /**
    * Handles keyup events.
    * @scope private
    * @param oEvent The event object for the keyup event.
    */
    AutoSuggestControl.prototype.handleKeyUp = function (oEvent /*:Event*/) {

    var iKeyCode = oEvent.keyCode;

    //make sure not to interfere with non-character keys
    if (iKeyCode < 32 || (iKeyCode >= 33 && iKeyCode <= 46) || (iKeyCode >= 112 && iKeyCode <= 123)) {
    //ignore
    } else {
    //request suggestions from the suggestion provider
    this.provider.requestSuggestions(this);
    }
    };

    /**
    * Initializes the textbox with event handlers for
    * auto suggest functionality.
    * @scope private
    */
    AutoSuggestControl.prototype.init = function () {

    //save a reference to this object
    var oThis = this;

    //assign the onkeyup event handler
    this.textbox.onkeyup = function (oEvent) {

    //check for the proper location of the event object
    if (!oEvent) {
    oEvent = window.event;
    }

    //call the handleKeyUp() method with the event object
    oThis.handleKeyUp(oEvent);
    };

    };

    /**
    * Selects a range of text in the textbox.
    * @scope public
    * @param iStart The start index (base 0) of the selection.
    * @param iLength The number of characters to select.
    */
    AutoSuggestControl.prototype.selectRange = function (iStart /*:int*/, iLength /*:int*/) {

    //use text ranges for Internet Explorer
    if (this.textbox.createTextRange) {
    var oRange = this.textbox.createTextRange();
    oRange.moveStart("character", iStart);
    oRange.moveEnd("character", iLength - this.textbox.value.length);
    oRange.select();

    //use setSelectionRange() for Mozilla
    } else if (this.textbox.setSelectionRange) {
    this.textbox.setSelectionRange(iStart, iLength);
    }

    //set focus back to the textbox
    this.textbox.focus();
    };

    /**
    * Inserts a suggestion into the textbox, highlighting the
    * suggested part of the text.
    * @scope private
    * @param sSuggestion The suggestion for the textbox.
    */
    AutoSuggestControl.prototype.typeAhead = function (sSuggestion /*:String*/) {

    //check for support of typeahead functionality
    if (this.textbox.createTextRange || this.textbox.setSelectionRange){
    var iLen = this.textbox.value.length;
    this.textbox.value = sSuggestion;
    this.selectRange(iLen, sSuggestion.length);
    }
    };



    e l'altro è suggestions1.js


    /**
    * Provides suggestions for state names (USA).
    * @class
    * @scope public
    */
    function StateSuggestions() {
    this.states = [
    "Alabama", "Alaska", "Arizona", "Arkansas",
    "California", "Colorado", "Connecticut",
    "Delaware", "Florida", "Georgia", "Hawaii",
    "Idaho", "Illinois", "Indiana", "Iowa",
    "Kansas", "Kentucky", "Louisiana",
    "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota",
    "Mississippi", "Missouri", "Montana",
    "Nebraska", "Nevada", "New Hampshire", "New Mexico", "New York",
    "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon",
    "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota",
    "Tennessee", "Texas", "Utah", "Vermont", "Virginia",
    "Washington", "West Virginia", "Wisconsin", "Wyoming"
    ];
    }

    /**
    * Request suggestions for the given autosuggest control.
    * @scope protected
    * @param oAutoSuggestControl The autosuggest control to provide suggestions for.
    */
    StateSuggestions.prototype.requestSuggestions = function (oAutoSuggestControl /*:AutoSuggestControl*/) {
    var aSuggestions = [];
    var sTextboxValue = oAutoSuggestControl.textbox.value;

    if (sTextboxValue.length > 0){

    //search for matching states
    for (var i=0; i < this.states.length; i++) {
    if (this.states[i].indexOf(sTextboxValue) == 0) {
    aSuggestions.push(this.states[i]);
    }
    }
    }

    //provide suggestions to the control
    oAutoSuggestControl.autosuggest(aSuggestions);
    };

  6. #6
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    allora devi farlo in php... all'interno della funzione StateSuggestions ci scrivi in php i nomi presi dal db.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    49
    Scusami se Ti disturbo ancora.
    Allora io in Php ho fatto la pagina per prelevare i dati dal Db.
    Per comodità ho messo i dati in una SELECT.
    I dati della select riesco a prelevarli direttamente da Javascript.
    Adesso dovrei valorizzare in Javascript "this.states = [];" con i valorti prelevati.
    Se inserisco a mano i dati non ho problemi, il codice funziona. Purtroppo non riesco a farlo automaticamente.

    Se poi pensi sia una cosa impossibile o molto difficile cercerò un'altra strada

    Ciao e grazie
    Stefano

  8. #8
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    non hai capito quello che ti ho scritto prima...
    perché prelevi i dati dal db, crei la <select> e poi li metti nell'array? Mettili direttamente nell'array

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    49
    Il mio concetto era quello di modificare il meno possibile il codice.
    in questo modo lavoravo in Javascript e spero di inserire tranquillamente i dati nell''Array.
    Ora faccio altre prove.

    Ti ringrazio
    Stefano

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    49
    Purtroppo devo abbandonare.
    Ti disturbo per, forse, l'ultima volta.
    Mi sapresTi indicare se esiste la possibilità di evidenziare solamente una parte di testo in una casella di Testo tramiet JS?

    Grazie soprattutto per la pazienza

    Ciao
    Stefano

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.