Quero ter uma lista suspensa com um conjunto de valores, mas também permitir que o usuário "selecione" um novo valor não listado lá.
Vejo que o select2 suporta isso se você o estiver usando no tags
modo, mas existe uma maneira de fazê-lo sem usar tags?
jquery-select2
johnjohn
fonte
fonte
Respostas:
Para a versão 4+, verifique esta resposta abaixo por Kevin Brown
No Select2 3.5.2 e abaixo, você pode usar algo como:
(extraído de uma resposta na lista de distribuição select2, mas não consegue encontrar o link agora)
fonte
selectOnBlur: true
trabalho, consulte: stackoverflow.com/questions/25616520/…tags: []
juntocreateSearchChoice
.A excelente resposta fornecida pelo @fmpwizard funciona para o Select2 3.5.2 e inferior, mas não funciona no 4.0.0 .
Desde muito cedo (mas talvez não tão cedo quanto essa pergunta), o Select2 oferece suporte à "marcação": onde os usuários podem adicionar seu próprio valor, se você permitir. Isso pode ser ativado através da
tags
opção, e você pode brincar com um exemplo na documentação .Por padrão, isso criará uma opção que possui o mesmo texto que o termo de pesquisa que eles inseriram. Você pode modificar o objeto usado se estiver procurando marcá-lo de uma maneira especial ou criar o objeto remotamente depois que ele for selecionado.
Além de servir como um sinalizador fácil de detectar no objeto transmitido pelo
select2:select
evento, a propriedade extra também permite que você renderize a opção de maneira um pouco diferente no resultado. Portanto, se você deseja sinalizar visualmente o fato de que é uma nova opção colocando " (novo) " ao lado, você pode fazer algo assim.fonte
Apenas para manter o código ativo, estou postando o código de @rrauenza Fiddle a partir do seu comentário .
HTML
jQuery
fonte
Como muitas dessas respostas não funcionam na versão 4.0 ou superior, se você estiver usando o ajax, o servidor poderá adicionar o novo valor como uma opção. Portanto, funcionaria assim:
[{"text":" my NEW option)","id":"0"}]
fonte
Existe uma solução melhor, eu acho agora
basta definir a marcação como true nas opções selecionadas?
de https://select2.org/tagging
fonte
Melhor na resposta @fmpwizard:
fonte
Eu acabei de encontrar isso com Kevin Brown. https://stackoverflow.com/a/30019966/112680
Tudo o que você precisa fazer
v4.0.6
é usar otags: true
parâmetrofonte
Na maioria dos casos, precisamos comparar valores com registro insensível. E esse código retornará false, o que levará à criação de registros duplicados no banco de dados. Além disso, String.prototype.localeCompare () não é suportado pelo navegador Safary e este código não funcionará neste navegador;
substituirá melhor a
fonte
Obrigado pela ajuda pessoal, usei o código abaixo no Codeigniter II estou usando a versão: 3.5.2 of select2.
fonte