Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sNniffer

Manipular valores input com javascript

Recommended Posts

Tenho uma função, que recebe um valor, ela deva verificar se este valores já está contido no input, se estiver deve remover se não estiver deve adicionar o valor ao input, estou tentando assim:

function options_add_capture_id(input)
{
	var i = input;
	var o = document.getElementById("options_add_input").value;
	 
	var a = o.split('/');
	var p = a.indexOf(i); 

	if(p > -1)
		a.splice(p, 1); 
	else
		a.push(i.toString());

	document.getElementById("options_add_input").value = a.join('/');

}
	

Ela funciona em partes, se não tiver o conteúdo no input ela adiciona, mas, se tiver o conteúdo ela tambem adiciona, o que há de errrado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem algumas falhas na sua verificação.. melhor usar regex do que indexOf nesse caso.

pelo o que entendi, você separa cada valor por uma /, então, uma checagem legal ficaria assim:

> _addContent('/a/b/c', 'a')
'/a/b/c'
> _addContent('/a/b/c', 'e')
'/a/b/c/e'
> _addContent('/a/b/c', 'b')
'/a/b/c'
> _addContent('/a/b/c', 'ab')
'/a/b/c/ab'
> _addContent('/a/b/c', 'c')
'/a/b/c'
> _addContent('/a/b/c', 'abc')
'/a/b/c/abc'
> _addContent('/a/b/c', 'ab')
'/a/b/c/ab'
> 
function _addContent(text, input) {
  text += (new RegExp('(\\b|\/)' + input + '(\\b|\/)').test(text)) ? '' : '/'+input;
  return text;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.