tengo una funcion que crea un input text con un div que propone por aproximacion a medida que se va escribiendo (tipo google) hasta ahi genial!!! pero deseo crear un input oculto que me traiga otro parametro que no quiero que se visualize.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
en un td llamo a la siguiente funcion:
Código PHP:
<td width='70%' >
<?php input_autocompletar($_SWOPOST [ 'USERID' ], 'item_' .$arr['tipo'], $arr['descripcion'],'50','10', LPATH_TESORERIA.'config.php');?>
</td>
aca dejo el detalle de la funcion input_autocompletar :
Código PHP:
/**
* @param text $userId (USERID de Joomla)
* @param text $id (nombre del input)
* @param text $value (valor del input)
* @param int $size (tamaño del input)
* @param int $maxlength (idem anterior)
* @param text $php_destino (Archivo php que realiza la busqueda y se muestra dentro del div por ajax, ej: "/wko/contabilidad/cuenta.php")
* @param text $prox_input (si se pone, una vez que se hace blur del input, hace foco en este)
*/
function input_autocompletar ( $userId, $id, $value, $size = 15, $maxlength = 10, $php_destino, $prox_input = '' ){
$div = "autocompletar_".rand(100000,999999);
?>
<input type="text" id="<?=$id?>" value="<?=$value?>" size="<?=$size?>" maxlength="<?=$maxlength?>"
onKeyUp="input_autocompletar('<?=$id?>','<?=$userId?>','<?=$div?>','<?=$php_destino?>');"
onBlur="document.getElementById('<?=$id?>').value=selector;document.getElementById('<?=$div?>').innerHTML = ''; <?php if($prox_input != '') echo "document.getElementById('".$prox_input."').focus();"?>"
autocomplete="off"/>
<br />
<div id="<?= $div ?>" style="position: absolute; text-align: left; height: 100px; overflow: auto;"></div>
<?php
}
Hay que crear el php que realiza la busqueda para que la funcion js utilizada aca lo llame por ajax y escriba el resultado en el div correspondiente el cual lo pondre debajo.
Código PHP:
<?php
if(trim($r_dato) == '') die();
$stk_prod = new stk_productos();
$stk_prod->filtrolikebusqueda(trim($r_dato));
//$lc_plan_cuentas->LimitSet(0,10);
$stk_prod->QueryRecordset();
// echo$stk_prod->SQL();
if($stk_prod->CantReg() == 0) die();
?>
<table class="<?= wo_tbl_tabla?>">
<?php
while($stk_prod->GetNextRecord()){
?>
<tr>
<td onMouseOver="selector='<?=$stk_prod->producto->getCodigo(); ?>';">
<?= $stk_prod->producto->getCodigo().' - '.$stk_prod->producto->getDescripcion()?>
</td>
</tr>
<?php
}
?>
</table>
Código PHP:
Por ultimo el JS
<script type="text/javascript">
<!--
var xhr;
var div_n;
var selector;
function input_autocompletar(input_name, userid,div_name,php_destino){
if(window.ActiveXObject){
xhr = new ActiveXObject('Microsoft.XMLHTTP');
} else if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}
div_n = div_name;
var dato=document.getElementById(input_name).value;
selector = dato;
xhr.open("POST", php_destino);//"wko/contabilidad/cuenta.php"
xhr.onreadystatechange = callbackInput_autocompletar;
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send("dato="+dato+"&USERID="+userid+"&input_name="+input_name);
}
function callbackInput_autocompletar(){
if(xhr.readyState == 4){
if(xhr.status == 200){
document.getElementById(div_n).innerHTML = xhr.responseText;
}
}
}
//-->
</script>