Début ajout de l'autocomplétion ajax sur la liste déroulante des pays

This commit is contained in:
Regis Houssin 2007-02-11 19:02:09 +00:00
parent 673c6a2fda
commit 602473dced
5 changed files with 145 additions and 94 deletions

View File

@ -47,22 +47,24 @@ if(isset($_GET['keyref']) && !empty($_GET['keyref']) || isset($_GET['keylabel'])
// Generation liste des pays // Generation liste des pays
if(isset($_POST['search']) && !empty($_POST['search'])) if(isset($_POST['pays']) && !empty($_POST['pays']))
{ {
print 'hello world';
$sql = "SELECT rowid, code, libelle, active"; $sql = "SELECT rowid, code, libelle, active";
$sql.= " FROM ".MAIN_DB_PREFIX."c_pays"; $sql.= " FROM ".MAIN_DB_PREFIX."c_pays";
$sql.= " WHERE active = 1 AND libelle LIKE '%" . $_POST['search'] . "%'"; $sql.= " WHERE active = 1 AND libelle LIKE '%" . $_POST['pays'] . "%'";
$sql.= " ORDER BY code ASC;"; $sql.= " ORDER BY libelle ASC;";
$resql=$this->db->query($sql); $resql=$db->query($sql);
if ($resql) if ($resql)
{ {
print '<ul>'; print '<ul>';
while($data = mysql_fetch_assoc($resql)) while($data = mysql_fetch_assoc($resql))
{ {
print '<li>'.stripslashes($data['libelle']).'</li>'; print '<li>';
print stripslashes($data['libelle']);
print '<span class="informal" style="display:none">'.$data['rowid'].'-idcache</span>';
print '</li>';
} }
print '</ul>'; print '</ul>';
} }

View File

@ -323,11 +323,12 @@ class Form
if ($conf->use_ajax && $conf->global->CODE_DE_TEST == 1) if ($conf->use_ajax && $conf->global->CODE_DE_TEST == 1)
{ {
print '<div>'; print '<div>';
print '<input type="text" id="search" name="search" />'; print '<input type="text" size="45" id="pays" name="pays" />';
print '<input type="hidden" name="pays_id" id="pays_id" value="" '.$htmloption.' />';
print '</div>'; print '</div>';
print '<div id="hint"></div>'; print '<div id="hint" class="autocomplete"></div>';
print '<script type="text/javascript">'; print '<script type="text/javascript">';
print 'new Ajax.Autocompleter(\'search\',\'hint\',\''.DOL_URL_ROOT.'/ajaxresponse.php\');'; print 'new Ajax.Autocompleter(\'pays\',\'hint\',\''.DOL_URL_ROOT.'/ajaxresponse.php\',{method: \'post\',paramName: \'pays\',afterUpdateElement: ac_return});';
print '</script>'; print '</script>';
} }
else else

View File

@ -592,3 +592,21 @@ function newpopup(url,title) {
fen=window.open(tmp,title,wfeatures); fen=window.open(tmp,title,wfeatures);
return false; return false;
} }
/*=================================================================
Purpose: Récupère l'id d'une autcompletion Ajax
Input: field,item
Author: Regis Houssin
Licence: GPL
==================================================================*/
function ac_return(field, item){
// on met en place l'expression régulière
var regex = new RegExp('[0123456789]*-idcache', 'i');
// on l'applique au contenu
var idCache = regex.exec($(item).innerHTML);
//on récupère l'id
id = idCache[0].replace('-idcache', '');
// et on l'affecte au champ caché
$(field.name+'_id').value = id;
}

View File

@ -380,6 +380,7 @@ if ($_POST["getcustomercode"] || $_POST["getsuppliercode"] ||
print '<tr><td width="25%">'.$langs->trans('Country').'</td><td colspan="3">'; print '<tr><td width="25%">'.$langs->trans('Country').'</td><td colspan="3">';
$form->select_pays($soc->pays_id,'pays_id',$conf->use_javascript?' onChange="autofilltownfromzip_save_refresh_create()"':''); $form->select_pays($soc->pays_id,'pays_id',$conf->use_javascript?' onChange="autofilltownfromzip_save_refresh_create()"':'');
if ($conf->use_javascript && $conf->use_javascript) print '<div id="hint"></div>';//utile pour afficher la recherche des pays avec ajax
print '</td></tr>'; print '</td></tr>';
print '<tr><td>'.$langs->trans('State').'</td><td colspan="3">'; print '<tr><td>'.$langs->trans('State').'</td><td colspan="3">';

View File

@ -1044,3 +1044,32 @@ td.hidden {
td.alerte { td.alerte {
background: #FF99A9; background: #FF99A9;
} }
/* ============================================================================== */
/* Liste déroulante de l'autocompletion Ajax */
/* ============================================================================== */
div.autocomplete {
position:absolute;
width:250px;
background-color:white;
border:1px solid #888;
margin:0px;
padding:0px;
}
div.autocomplete ul {
list-style-type:none;
margin:0px;
padding:0px;
}
div.autocomplete ul li.selected { background-color: #ffb;}
div.autocomplete ul li {
list-style-type:none;
display:block;
margin:0;
padding:2px;
height:16px;
cursor:pointer;
}