

Našeptávač- jQuerry
Zdravím, chtěl jsem si udělat našeptávač, který bude komunikovat s db - tzn. dá na výběr možnosti, které obsahují zadanou část textu... snad to líp pochopíte takhle:
V DB mám kód, název, množství a jednotku - ta záleží na zboží, někde se počítá na kusy, někde kila...
Pak mám 4 inputy, název, množství....
Pokud je zvolena nějaká možnost vyplní se všechny inputy + input množství se sám vyplní a "zašedne" - nepůjde upravit(readonly), ale to není podstatné.
Teď k našeptávání, potřebuji aby se po napsání min. 3 znaků z Názvu nebo Kódu zobrazila nabídka možností z DB, odpovídajících prozatímnímu zadaní (tzn. nabídka se bud měnit pokud přidám další znak a bude přímo komunikovat s DB).
Po vybrání se vyplní všechny 4 inputy.
Text z DB jsem dostal jako řetězec, rozdelil jsem si ho znakem "=" na části, a každou jsem vyplnil do příslušného inputu.
Pak nastal první problém, inputy se sice vyplnili, ale až po tom, co se na ně kliklo. Navíc když se kliklo na input, zmizel text z předchozího. - Kdyby měl někdo s tímto zkušenost, budu moc rád za pomoc - google moc neporadil, buď to nefunguje, nebo je to nad moje možnosti :)
Děkuji - všechny kódy které můžete potřebovat vč. funkcí jsou níže.
<h2>Vložení položky dokladu:</h2>
<table>
<tr>
<td>kód</td>
<td>název</td>
<td>množství</td>
<td>jednotka</td>
<td> </td>
</tr>
<tr>
<td><input type="text" name="kod" id="nasept_kod" value="" size=8></td>
<td><input type="text" name="nazev" id="nasept_nazev" value="" size=32></td>
<td><input type="text" name="mnoz" id="mnoz" value="" size=5></td>
<td><input type="text" name="merjed" id="merjed" value="" size=4 readonly></td>
<td><input type="submit" name="vlozit" id="buttonvlozit" value="Vložit"></td>
</tr>
</table>
JQuerry castJQuerry 1.7.1.min.js
JQuerry-ui 1.8.18.custom.min.js
<script type="text/javascript">
<!--
$(document).ready(function(){
$("#nasept_nazev").autocomplete({
source: "getdatanazev.php",
minLength: 3,
delay: 0
});
$("#nasept_kod").autocomplete({
source: "getdatakod.php",
minLength: 3,
delay: 0
});
$("#nasept_kod").bind("blur", function(){
var text = $("#nasept_kod").val();
var pole = text.split('=');
$("#nasept_kod").val(pole[0]);
$("#nasept_nazev").val(pole[1]);
$("#merjed").val(pole[2]);
});
$("#nasept_nazev").bind("blur", function(){
var text = $("#nasept_nazev").val();
var pole = text.split('=');
$("#nasept_kod").val(pole[0]);
$("#nasept_nazev").val(pole[1]);
$("#merjed").val(pole[2]);
});
$(function() {
$("#nasept_kod3").autocomplete({
source: "getdatakod.php",
minLength: 3,
select: function( event, ui ) {
var text = "text1=text2=text3";
var text = ui.item;
var pole = text.split('=');
alert(pole[0]);
$("#nasept_kod").val(pole[0]);
$("#nasept_nazev").val(pole[1]);
$("#merjed").val(pole[2]);
},
delay: 0
});
});
});
-->
</script>
getdatakodJSON -JSON pro PHP4 - abych dostal řetězec z DB
<?php
include "./databaze.php";
require('JSON.php');
$json = new Services_JSON();
//$term = trim(strip_tags($_GET['term']));
$term = trim($_GET['term']);
////$qstring = 'SELECT kod FROM zbozi WHERE kod LIKE "%'.$term.'%" LIMIT 60';
$qstring = 'SELECT kod, nazevCZ, merjed FROM zbozi WHERE kod LIKE "%'.$term.'%" LIMIT 60';
$result = mysql_query($qstring);
////while ($row = mysql_fetch_array($result)) $row_set[] = $row[0];
while ($row = mysql_fetch_array($result)) $row_set[] = $row[0].'='.$row[1].'='.$row[2]; // kod=nazev=merjed
$output = $json->encode($row_set);
echo $output;
?>
getdatanazev<?php
include "./databaze.php";
require('JSON.php');
$json = new Services_JSON();
//$term = trim(strip_tags($_GET['term']));
$term = trim($_GET['term']);
$qstring = 'SELECT kod, nazevCZ, merjed FROM zbozi WHERE nazevCZ LIKE "%'.$term.'%" LIMIT 60';
//$qstring = 'SELECT nazevCZ FROM zbozi WHERE nazevCZ LIKE "%'.$term.'%" LIMIT 60';
$result = mysql_query($qstring);//query the database for entries containing the term
while ($row = mysql_fetch_array($result)) $row_set[] = $row[0].'='.$row[1].'='.$row[2]; // kod=nazev=merjed
//while ($row = mysql_fetch_array($result)) $row_set[] = $row[0];
$output = $json->encode($row_set);
echo $output;
?>
Upravené odkazy do správneho tvaru. (los)