2015-06-15 12 views
5

Ill solo awnser la prima domanda ... Perché IE5 ti chiedi, perché è su un dispositivo Windows CE che sto lavorando con così im limitato a utilizzare IE5. L'applicazione che ho realizzato utilizza una pagina web con un paio di elementi.aggiungendo articoli a <select> in IE5

Ho due campi di testo e un elenco o <select> Desidero trasferire il valore di una casella di testo all'elenco. Ho funzionato in IE 10 e Chrome, ma quando ho testato la pagina web sul dispositivo non ha inviato il valore di textfield due alla lista. Qualcuno può aiutarmi a risolvere questo problema?

Questo è il mio codice html:

<tr> 
        <td>Locatie:</td> 
        <td><input type="text" id="one" onkeyup="CheckOne()" name="locatie" value="{locatie}" /></td> 
       </tr> 
       <tr> 
        <td>Bonregel:</td> 
        <td><input type="text" name="bonregel" id="two" onkeyup="CheckTwo(event)" /></td> 
       </tr> 
       <tr> 
        <td>Bonlijst:</td> 
        <td><select id="selectbox" multiple></select></td> 
       </tr> 
       <tr> 
        <td></td> 
        <td><input type="submit" value="Verzenden" id="sub" onclick="CheckContent()" /></td> 
       </tr> 
       <tr> 
        <td></td> 
        <td><input type="button" value="Velden Legen" id="reset" onclick="ClearFields()" /></td> 
       </tr> 

E poi ho i miei funzioni JavaScript per aggiungere i dati all'elenco:

function AddToList(field) { 
       // Create an Option Object 
       var opt = document.createElement("option"); 
       document.getElementById("selectbox").options.add(opt); 
       opt.text = document.getElementById("two").value; 
       opt.value = document.getElementById("two").value; 
      } 

function CheckTwo(event) { 
       var field = document.getElementById("two").value; 
       var tKey = (event.which) ? event.which : event.keyCode; 
       if (tKey == 51) { 
        AddToList(field); 
        GiveFocus("two"); 
       } 
      } 



// Gives focus to the specified component 
      function GiveFocus(id) { 
       document.getElementById(id).focus(); 
      } 

      // Action that gets triggered by textfield 1 
      function CheckOne() { 
       if (event.keyCode == 13) 
        GiveFocus("two"); 
      } 

Modifica

ho capito fuori che il pulsante ha la priorità per qualche tipo di motivo. Il pulsante invia non appena premo invio. Ma quando premo invio nel secondo campo di testo dovrebbe inviare i dati alla lista. C'è una soluzione in modo che il tasto non prende la priorità

Heres un violino del mio codice completo: https://jsfiddle.net/3jywt8v1/1/

+1

Potrebbe essere utile verificare: IE5 JavaScript è stato disabilitato per impostazione predefinita. – Mave

+1

@Mave Grazie per averlo indicato, ho controllato se il javascript è disabilitato ma non lo è.Il javascript è abilitato sul mio dispositivo –

+3

Si tratta di 'document.getElementById (" selectbox "). Add (opt)'? MDN afferma che l'add è su [HTMLSelectElement] (https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement/add), non su 'HTMLOptionsCollection' – CodingIntrigue

risposta

-1

Va bene trovo sempre un po 'strano per awnser mie domande, ma ho trovato una soluzione al mio problema e ho voluto condividere con le persone che hanno contribuito me.

Ho capito che in IE5 lo <select> non è molto buono da usare in termini di aggiunta di elementi con javascript. Ecco perché sto usando uno <textarea> per memorizzare tutti i dati. Ho creato il campo <textarea> a readonly.

Questo è il Javascript che utilizzo per farlo funzionare, e con il suo funzionamento intendo aggiungere il valore di textbox 2 nella textarea.

function AddToList() { 
       // Create an Option Object 
       var box = document.getElementById("bonregels"); 
       var val = document.getElementById("two").value.toString(); 
       if (box.value != "") 
        box.value += "\n"; 
       box.value = box.value + val;      
      } 

Grazie a tutti quelli che mi hanno aiutato, mi hai spinto nella giusta direzione.

3

Su IE5, probabilmente è necessario utilizzare il costruttore Option piuttosto che createElement:

function AddToList(field) { 
    // Create an Option Object 
    var val = document.getElementById("two").value; 
    var opt = new Option(val, val); 
    document.getElementById("selectbox").options.add(opt); 
} 

Funziona anche con i browser moderni.

Penso add, quello che si sta utilizzando, è il modo più compatibile per aggiungere l'opzione nell'elenco, ma se questo non lo è, si potrebbe essere necessario aggiungere tramite assegnazione invece:

var options = document.getElementById("selectbox").options; 
options[options.length] = opt; 

... ma ancora una volta, penso che il add sia stato meglio supportato negli anni '90.

+0

Lo proverò e ti permetterò di sapere se ha funzionato –

+0

Ho attivato l'evento sul tasto INVIO, ma quando premo invio il pulsante ha la priorità e invia gli elementi. Ma la cosa divertente è che i campi in cui vedi l'evento arent in un

. Conosci un modo per far sì che il pulsante non abbia priorità –

+0

@CKY: non rendere il pulsante a 'type =" submitt ", usa' type = "button" '. Quando sei pronto per inviare il modulo, chiama 'submit()' sull'elemento del modulo. –

0

Ecco il mio codice di esempio:

<form name=vv> 
<select name="qq"></select> 
<input type=button value="Go" onclick="add()"> 
</form> 

function add() 
{ 
var qq = document.vv.qq; 
var option = new Option("text", "0"); 
qq.options[qq.options.length] = option; 
} 
+0

Come può funzionare anche questo, non lo capisco completamente. Da dove prendi il testo e cosa significa document.vv.qq? –

+0

vv è il nome del modulo (es. Name = "vv" nel tag form) qq è il nome del campo (es. Name = "qq" nel tag select) Nel vecchio IE, non supporta molto bene il DOM, quindi il tuo codice non funziona. –

+0

Bene, allora capisco quindi –

Problemi correlati