Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
estava criando um plugin para o jquery, que preenche um combo com json via ajax. gostaria de uma opinião sobre o código pois acho q alguns trechos estão um pouco estranho....
assim q terminar de upar coloco o exemplo completo com banco de dados e arquivos .php
grato.
plugin:
jQuery.combo = function(settings){
var config = {
'destiny' : '',
'url' : ''
};
if(settings){
$.extend(config, settings);
}
listarSistemas(config.url, config.destiny);
};
function listarSistemas(url, comboId){
AjaxRequest.get({
'url':url,
'onLoading':function(){
},
'onSuccess':function(req){
cleanCombo(comboId);
setCombo(req.responseText, comboId);
},
'onError':function(req){
}
});
}
function setCombo(data, comboId){
data = eval(data);
var keys = getKeysJSON(data);
comboId[0].options[0] = new Option('Select..','');
for(i=0; i<data.length; i++){
eval ("var description = data[i] ."+ keys[0]);
eval ("var value = data[i] ."+ keys[1]);
comboId[0].options[i+1] = new Option(value, description);
}
}
function cleanCombo(comboId){
while (comboId[0].options.length) {
comboId[0].remove(0);
}
}
function getKeysJSON(data){
var keys = Array();
var index = 0;
for(var i in data){
for(var j in data[i]){
keys[index] = j;
index++;
}
break;
}
return keys;
}
exemplo de uso:
$(document).ready(function(){
$.combo({destiny: $('#country'), url: 'list_country.php'});
$('#country').change(function(){
$.combo({destiny: $('#city'),
url: 'find.php?id='+ $('#country').val()
});
});
});
}Carregando comentários...