PHP - Autocomplete en input con validacion

 
Vista:
Imágen de perfil de Antonio

Autocomplete en input con validacion

Publicado por Antonio (7 intervenciones) el 25/09/2015 19:41:15
Buenas, tengo un formulario en donde lo primero que tengo es un input para buscar un cliente, cada vez que presiono una letra mediante ajax hago el autocompletar.. todo bien hasta aqui... el problema esta en ¿como hago para que el usuario al escribir el nombre de un cliente que no este en la BD le salte un erro o no le deje seguir cargando el formulario?
Este es mi formulario: NuevaTarea.php
1
2
3
4
5
6
7
8
9
10
<link rel="stylesheet" href="css/styleAutocomplete.css"/>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/script.js"></script>
 
<div class="label_div">Cliente: </div>
       <div class="input_container">
                    <input type="text" id="cliente_id" onkeyup="autocomplet()">
                    <ul id="cliente_list_id"></ul>
                    Id: <input type="text" id="idCliente" name="cliente" disabled>
         </div>

Este es el script: script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// autocomplet : this function will be executed every time we change the text
function autocomplet() {
	var min_length = 0; // min caracters to display the autocomplete
	var keyword = $('#cliente_id').val();
	if (keyword.length >= min_length) {
		$.ajax({
			url: 'ajax_refresh.php',
			type: 'POST',
			data: {keyword:keyword},
			success:function(data){
				$('#cliente_list_id').show();
				$('#cliente_list_id').html(data);
			}
		});
	} else {
		$('#cliente_list_id').hide();
	}
}
 
// set_item : this function will be executed when we select an item
function set_item(item, idCliente) {
	// change input value
	$('#cliente_id').val(item);
	$('#idCliente').val(idCliente);
	// hide proposition list
	$('#cliente_list_id').hide();
}


Este es el refresh: ajax_refresh.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// PDO connect *********
function connect() {
    return new PDO('mysql:host=localhost;dbname=cliente', 'root', ' ', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}
 
$pdo = connect();
$keyword = '%'.$_POST['keyword'].'%';
$sql = "SELECT * FROM clientes WHERE razonSocial  ORDER BY id ASC LIMIT 0, 30";
$query = $pdo->prepare($sql);
$query->bindParam(':keyword', $keyword, PDO::PARAM_STR);
$query->execute();
$list = $query->fetchAll();
foreach ($list as $rs) {
	// put in bold the written text
	$razonSocial = str_replace($_POST['keyword'], '<b>'.$_POST['keyword'].'</b>', $rs['razonSocial']);
	$apellido = str_replace($_POST['keyword'], '<b>'.$_POST['keyword'].'</b>', $rs['apellido'].' '.$rs['nombre']);
	$nombreFantasia = str_replace($_POST['keyword'], '<b>'.$_POST['keyword'].'</b>', $rs['nombreFantasia']);
	// add new option
    echo '<li onclick="set_item(\''.$rs['razonSocial'].'\', \''.$rs['id'].'\')">'.$razonSocial.'</li>';
 
}
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder