quero fazer assim…
um combo box com cidades… um listbox embaixa do combo e do lado um botao adicionar e remover para o cara ir adicionando e removendo…
como monto isso no form do struts ? alguem tem um exemplo?
quero fazer assim…
um combo box com cidades… um listbox embaixa do combo e do lado um botao adicionar e remover para o cara ir adicionando e removendo…
como monto isso no form do struts ? alguem tem um exemplo?
Isso tá mais pra JavaScript do que JSP e/ou struts.
Vê se é isso:
Código pra inserir:
/**
* Método que adiciona uma nova Option no combobox designado.
*
* @param campoOrig campo de onde vem a informação.
* @param campoDest campo (combobox) que receberá o novo Option.
* @param msgErro mensagem para ser exibida caso o campoOrig esteja vazio.
*
* Possível uso:
* onclick="addSimples(form1.prefixe, form1.prefixes, 'O prefixo não pode ser vazio!');"
*/
function addSimples(campoOrig, campoDest, msgErro)
{
x = campoOrig.value;
len = campoDest.length;
existe = contains(campoDest.options, x);
if (existe > -1)
{
alert('Valor já cadastrado.');
}
else
{
if (x == "")
{
alert(msgErro);
}
else
{
campoDest.options[len] = new Option(x, x, true);
len++;
}
}
x = null;
campoOrig.value = "";
arrangeSimples(campoDest);
}
Código pra excluir:
/**
* Método que remove um valor do combobox.
*
* @param combobox do qual seré removido o elemento.
*
* Possível uso:
* onclick="deleteSimples(form1.prefixes);"
*/
function deleteSimples(lista)
{
for (i = 0; i < lista.length; i++)
{
if (lista.options[i].selected == true)
{
lista.options[i] = null;
arrangeSimples(lista);
return;
}
}
}
Código no JSP:
<tr>
<td>Prefixes:</td>
<td>
<table>
<tr>
<td>Prefixo:</td>
<td><input name="prefixe" type="text" /></td>
<td><input type="button" name="addList" value="Adicionar" onclick="addSimples(form1.prefixe, form1.prefixes, 'O prefixo não pode ser vazio!');" ${disabled} /></td>
</tr>
<tr>
<td colspan="2">
<input type="hidden" name="_<c:out value="${status.expression}"/> value="visible" />
<select name="${status.expression}" multiple="multiple" size="10" style="width: 100%" ${disabled} >
<c:forEach items="${status.value}" var="prefix">
<option value="${prefix}" selected="selected">${prefix}</option>
</c:forEach>
</select>
</td>
<td><input type="button" name="deleteList" value="Excluir" onclick="deleteSimples(form1.prefixes);" /></td>
</tr>
</table>
</td>
</tr>
Daí é só tu adaptares pras tuas necessidades, mas as chamadas dos scripts são essas.
Depois é só tu receberes os valores do campo tal (listbox) no struts como recebes qualquer outro campo, tratar as informações e salvar.
Boa sorte
[]s
Era isso mesmo… valeu!!!
Era isso mesmo… valeu!!!
da erro nas linhas…
existe = contains(campoDest.options, x);
fala que contains nao existe e tb na
arrangeSimples(campoDest);
Esqueci de coloca isso também:
/**
* Método que verifica se a lista contém o valor especificado.
*
* @param lista array utilizado para buscar o valor.
* @param valor valor a ser buscado no array.
*
* Possível uso:
* confirm(contains(form1.parameters.options, 'asdf'));
*/
function contains(lista, valor)
{
for (i = 0; i < lista.length; i++)
{
if (lista[i].value == valor)
{
return i;
}
}
return -1;
}
/**
* Método que ordena a lista especificada.
*
* @param lista array utilizado para buscar o valor.
*
* Possível uso:
* onclick="arrangeSimples(form1.parameters.options);"
*/
function arrangeSimples(lista)
{
tamanhoLista = lista.length;
if (tamanhoLista > 0)
{
for (i = 0; i < (tamanhoLista - 1); i++)
{
for (j = (i+1); j < tamanhoLista; j++)
{
var item1 = lista.options[i];
var item2 = lista.options[j];
if (item1.text > item2.text)
{
var aux = new Option(item1.text, item1.value, true);
lista.options[i] = new Option(item2.text, item2.value, true);
lista.options[j] = aux;
}
}
}
}
}
[]s