Retorno em função seletora
Salve amigos!
Mais sedo o Hugo me deu uma grande ajuda em uma função para acessar propriedades da minha tag "<option>" em uma datalist.
Assim eu poderia retornar os valores das propriedades como "nome", "uf", "cidade" etc:
<input list="meu-exemplo" class="auto-completar">
<datalist id="meu-exemplo">
<option value="Lucas Cardial" uf="TO" cidade="Palmas">
<option value="Luciano Afonso" uf="SP" cidade="Guarulhos">
<option value="Luciana Pereira" uf="BA" cidade="Salvador">
</datalist>
Pois bem, afim de usar o código X vezes, inseri o script em uma função que chamo de "SelectAttr", e passaria por parâmetro qual atributo eu quero retornar:
var UF = SelectAttr('uf');
var Cidade = SelectAttr('cidade');
function SelectAttr(selector){
$("input[list]").on('change', function(event){
var selected = $(this).val(),
option = $('#'+$(this).attr('list')+' option')
.filter(function(){
return this.value == selected;
}),
value = $(option).val(),
attr = $(option).attr(selector);
return attr
});
}
Vejam que na linha 11 eu tento retornar o valor da variável attr, mas não consigo por ela estar "uma camada abaixo" da função. Então tentei desta forma:
function SelectAttr(selector){
return $("input[list]").on('change', function(event){
var selected = $(this).val(),
option = $('#'+$(this).attr('list')+' option')
.filter(function(){
return this.value == selected;
}),
value = $(option).val(),
attr = $(option).attr(selector);
return attr
});
}
Mas o resultado disto quando chamo a função SelectAttr('nome'); é a´penas "[object]"
Discussão (4)
Carregando comentários...