Originariamente inviato da cavicchiandrea
Ripeto invece di popolare l'autocomplete con i tre dati passagli solo id, questo puoi farlo modificando l'autocomplete, ma se non hai un minimo di conoscenze io lascerei perdere.
P.S. Meglio spostare usando il link "segnala ad un moderatore"
Non mi è chiarissimo cosa significhi passare solo l'id: se riesco a far arrivare a PHP la stringa intera poi me la smazzo io.
La domanda è in sintesi questa: come faccio per leggere (passare a PHP) il contenuto di una listview (di jquerymobile) autocomplete?
Metto l'intero pezzo, togliendo le cose abbastanza inutili...
codice:
<!doctype html>
<head>
... roba jquerymobile
<script>
$( document ).on( "pageinit", "#page1", function() {
$( "#autocomplete" ).on( "listviewbeforefilter", function ( e, data ) {
var $ul = $( this ),
$input = $( data.input ),
value = $input.val(),
html = "";
$ul.html( "" );
if ( value && value.length > 3 ) {
$ul.html( "[*]<div class='ui-loader'><span class='ui-icon ui-icon-loading'></span></div>" );
$ul.listview( "refresh" );
$.ajax({
url: "json.php", //questo è uno script che ritorna la stringa trovata nel database
dataType: "json",
data: {q: $input.val()},
async:false,
success: function ( response ) {
// qui in val ho la stringa che mi serve prendere!
$.each( response, function ( i, val ) {
html += "[*]" + val + "";
});
$ul.html( html );
$ul.listview( "refresh" );
$ul.trigger( "updatelayout");
}
});
}
});
$('#autocomplete').on('click','li',function(){
$('#autocomplete').empty();
$('input[data-type="search"]').val($(this).text())
})
});
</script>
<style type="text/css">
.ui-listview-filter-inset {margin-top: 0;}
</style>
</head>
<body>
<div data-role="page" id="page1">
<div data-role="header" data-position="fixed" class="ui-header ui-bar-a ui-header-fixed fade ui-fixed-overlay" role="banner" style="top: 0px;">
indietro<h1>Ricerca autocompletamento</h1>
</div>
<!-- ecco qua: nel metodo POST riesco a "succhiare" (ossia passare in $POST) la variabile val della funzione di sopra al file eseguifiltro.php?
-->
<form action="/z/eseguifiltro.php" method="post">
<input type="submit" value="Vai">
<label for="text-3">ID </label>
<input type="text" data-clear-btn="true" name="id" id="ditta" value="">
<h3>Informazione da cercare</h3>
<ul name='idprova' id="autocomplete" data-role="listview" data-inset="true" data-filter="true" data-filter-placeholder="Cerca una pratica..." data-filter-theme="d">[/list]
</form>
</div>
</body>
</html>
In alternativa come faccio dalla funzione callback che popola la lista a mettere qualcosa qui?
codice:
<label for="text-3">ID </label>
<input type="text" data-clear-btn="true" name="id" id="ditta" value="">
In pratica, se non riesco in altro modo, vorrei che OLTRE alla lista venisse popolato il campo "normale", poi dando INVIO (il submit visto che c'è un solo bottone) => da lì parte tutto il giro del mondo.
Qualcosa del tipo contenuto-del-campo-X=val