Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, pessoal...tenho uma dúvida:
Tenho uma página html com um form de 6 campos, sendo que os dois últimos são de preenchimento
recursivo, ou seja, campos text multivalor com sequencia de números p/ alimentar 2 arrays (um p/cada campo text).
Tenho então 4 campos com dados únicos e 2 arrays para enviar ao meu servlet.
Como posso implementar isso ? Estou tentando c/javascript / jquery.
>
Acho que não entendi a dúvida. Você pode obter os parâmetros por meio nome que der a eles.
Tendo no seu HTML:
<input type='text' name='nomes[]'/>
No Servlet você pode obtê-los assim:
String nome[] = request.getParameterValues("nomes");
Esses dois campos text irão receber vários valores, a critério de quem irá digitá-los..pensei em armazená-los em um array. Assim, vale essa implementação acima ?
Poderia postar um exemplo de como está o HTML e como está fazendo para enviar os dados
Poderia postar um exemplo de como está o HTML e como está fazendo para enviar os dados
Consegui usando página php...está assim na página que envia ():
$(document).ready(function(){
var cont = 0;
var dosvalidas = new Array(100); //Array pré-alocado(gostaria de fazer alocação dinâmica, como um arraylist)
var valor = "";
$(':button').click(function(){ valor = $('#txtdovalida').val(); //Valor=0 pula o campo if(valor == 0){ document.frmentdos.txtdonula.focus(); }else{ if(valor == ""){ alert('PREENCHA O CAMPO'); document.frmentdos.txtdovalida.focus(); }else{ dosvalidas[cont]=valor; cont = cont + 1; txtdovalida.value=''; document.frmentdos.txtdovalida.focus(); } document.getElementById("hidvetor").value = dosvalidas.join("|"); } });
});
HTML:
<form name='frmentdos' method='post' action='recep1.php'>
<fieldset>
<legend>ENTRADA DE DO'S:</legend>
<label for='estab'>Estabel/Médico:</label>
<select>
<option value='estabel1'>Estabel1</option>
<option value='estabel1'>Estabel1</option>
<option value='estabel1'>Estabel1</option>
</select>
<br>
<label for='resp'>Responsável:</label>
<select>
<option value='resp1'>Resp1</option>
<option value='resp1'>Resp1</option>
<option value='resp1'>Resp1</option>
</select>
<br>
<label for='servidor'>Servidor:</label>
<select>
<option value='estabel1'>Serv1</option>
<option value='estabel1'>Serv1</option>
<option value='estabel1'>Serv1</option>
</select>
<br>
<label for='data'>Data:</label>
<input type='text' id='txtdata' name='txtdata'/><br>
<label for='dovalida'>DO's Válidas:</label>
<input type='text' id='txtdovalida'/>
<input type='button' name='btndovalida' value='FINALIZAR'>"
<input type="hidden" name="hidvetor" id="hidvetor" value="">
<br>
<label for="donula">DO's Nulas:</label>
<input type="text" id="txtdonula" name="txtdonula"/>
<input type="button" name="btndonula" onclick="" value="FINALIZAR">
<br />
<br/><br/>
<input type="submit" value="ENVIAR"/>
<input type="button" onclick="" value="LIMPAR"/>
</fieldset>
</form>
Teste na página que recebe(será o servlet):
<center><h3>CONFIRMAÇÃO DO ENVIO</h3></center>
<?php
echo "<br>";
$vetor = explode("|", $_POST['hidvetor']);
print_r($vetor);
?>Então você está explicando as coisas de forma errada.
Nesse caso você não está enviando um array e sim uma string onde está considerando o caractere " | " como separador.
Então poderia fazer assim, seu HTML:
<form action='recep1' method='post'>
<!-- outros inputs -->
<input type='text' name='hidvetor'/>
<button type='submit'> Enviar </button>
</form>
No servlet ficaria assim:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet(name="Recep", urlPatterns={"/recep1"})
public class Recep extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String vetor[] = req.getParameter("hidvetor").split("|");
// Faz algo com vetor
}
}
É claro que isso é apenas um exemplo, você deve verificar se o valor não é nulo antes de tentar manipular.Ok...vou passar o javascript mais estruturado...minha dúvida é como o "hidvetor" vai receber
o array, que nesse caso é transformado em string com separador.
$(document).ready(function(){
var cont = 0;
var dosvalidas = new Array(100); //Array pré-alocado(gostaria de fazer alocação dinâmica, como um arraylist)
var valor = "";
$(':button').click(function(){
valor = $('#txtdovalida').val();
//Valor=0 pula o campo
if(valor == 0){
document.frmentdos.txtdonula.focus();
}else{
if(valor == ""){
alert('PREENCHA O CAMPO');
document.frmentdos.txtdovalida.focus();
}else{
dosvalidas[cont]=valor;
cont = cont + 1;
txtdovalida.value='';
document.frmentdos.txtdovalida.focus();
}
document.getElementById("hidvetor").value = dosvalidas.join("|");
}
});
});<input type='text' value='a|e|i|o|u'/>
<script>
var vogais = "" + document.querySelector('input').value;
var array = [];
vogais.split("|").forEach(function(e){
array.push(e);
});
// array[ a , e , i , o , u ]
</script>
re22, como o objeto hidvetor pode receber o array gerado pela função javascript ? Ele vai ser
submetido ao array também...
Acho que não entendi a dúvida. Você pode obter os parâmetros por meio nome que der a eles.
Tendo no seu HTML:
<input type='text' name='nomes[]'/>
No Servlet você pode obtê-los assim:
String nome[] = request.getParameterValues("nomes");