2014-04-03 20 views
6

Molto semplice e diretto. Ho pre-compilato un datalista HTML con valori, sul modulo quando voglio selezionare un valore e inserirlo nel database SQLite. Questo è il mio codice di esempio che non funziona. Per favore aiutatemi. HTML5 creazione di moduli datalist:Ottieni il valore selezionato nel datalist usando jQuery

<input name="TypeList" list="TypeList" placeholder="Select Type"/> 
<datalist id="TypeList"> 
    <option value="State"> 
    <option value="Area"> 
    <option value="Town"> 
    <option value="Street"> 
    <option value="Number"> 
    <option value="Local Government"> 
    <option value="Ward"> 
    <option value="Country"> 
</datalist> 

questo è il codice di esempio jquery che non ha funzionato:

var relationshipTemp = $('#TypeList option:selected').text(); 
+0

Hai provato a cambiare '$ ('# TypeList opzione: selezionata '). text(); 'a' $ (' # TypeList option: selected '). val(); '? – 13ruce1337

+0

sì, l'ho provato, perché sto inserendo in SQLite (WebSQL) invece di mostrare i valori reali che sta mostrando "indefinito". Cosa c'è che non va? – kehinde

+0

In firefox, '' sembra funzionare. – Cullub

risposta

1

provare .VAL() invece:

var relationshipTemp = $('#TypeList option:selected').val(); 
12

Avere un selettore per selezionare l'elemento di input. Indicare l'evento dopo il quale si desidera spostare i valori. Ottieni il valore usando .val().

Esempio:

$("input[name=TypeList]").focusout(function(){ 
    alert($(this).val()); 
}); 

Spero che questo è quello che stai cercando jsFiddle

+2

Questa risposta deve essere accettata – Fasna

1

avrei usato '.on()':

HTML

<input type="text" name="display" id="display" value="" list="list-display" /> 
<datalist id="list-display"> 
<option>Name</option> 
<option>Id</option> 
</datalist> 

Javascript

3

:selected non funziona sulle opzioni datalist, in quanto un fornitore di dati può fornire suggerimenti per più ingressi. Se due input diversi contengono due suggerimenti diversi dall'elenco, quale sarebbe quello selezionato?

Come detto in altri commenti, è possibile controllare il valore dell'ingresso sul cambiamento in questo modo:

$("input[name='Typelist']").on('input', function(e){ 
    var selected = $(this).val(); 
}); 

Tuttavia, se si vuole fare in modo che il valore è in realtà una delle opzioni dal datalist dovrai fare un controllo extra, dato che con i visitatori del datalist possono ancora inserire valori diversi nell'input. Datalist offre solo suggerimenti.

Una soluzione per controllare se il valore è nella DataList:

$("input[name='Typelist']").on('input', function(e){ 
    var $input = $(this), 
     val = $input.val(); 
     list = $input.attr('list'), 
     match = $('#'+list + ' option').filter(function() { 
      return ($(this).val() === val); 
     }); 

    if(match.length > 0) { 
     // value is in list 
    } else { 
     // value is not in list 
    } 
}); 
1

Prova questa.

$('#id_relative option[datalisted=datalisted]').val() 
-2

semplice soluzione a questo problema è farlo come si ottiene il valore da un campo di immissione testo

Nome:

<input id="l" list="bloodgroup" name="blood_group" placeholder="Blood group"> 
        <datalist id="bloodgroup"> 
         <option value="A+"> 
         <option value="B+"> 
         <option value="AB+"> 
         <option value="O+"> 
         <option value="A-"> 
         <option value="B-"> 
         <option value="AB-"> 
         <option value="O-"> 
        </datalist> 

<button type="button" onclick="myFunction()">Try it</button> 



<script> 
function myFunction() { 
    console.log(document.getElementById("l").value); 
} 
</script> 
0
<input list="Model" id="ModelList" placeholder="Select Model"> 
<datalist id="Model"> 
<option value="A"> 
<option value="B"> 
<option value="C"> 
<option value="D"> 
</datalist> 
<script> 
var dataset= document.getElementById("ModelList").value; 
alert(dataset);</script> 
+5

Grazie per questo snippet di codice, che potrebbe fornire un aiuto limitato e immediato.Una [spiegazione corretta migliorerebbe notevolmente il suo valore a lungo termine] (// meta.stackexchange.com/q/114762/350567) mostrando * perché * questa è una buona soluzione al problema e lo renderebbe più utile per il futuro lettori con altre domande simili. Per favore [modifica] la tua risposta per aggiungere qualche spiegazione, incluse le ipotesi che hai fatto. – iBug

Problemi correlati