Jump to content
bdexterholland

onsubmit não é executado

Recommended Posts

Boa tarde,

 

Eu estou criando alguns forms via php para lançamento de comissão mês a mês para cada vendedor.

 

Eu pensei em usar ajax para submeter cada form individualmente para assim, agilizar o processo e diminuir chances de erro.

Estou tentando escrever uma rotina em javascript e associar ao OnSubmit dos forms.

 

Para gerar os forms, estou usando o seguinte código:

<?php 
				$VSQL = "SELECT email, nome FROM lds_usuarios ORDER BY nome";
				$VRES = mysqli_query($conn->getLink(), $VSQL);
				while($VLinha = mysqli_fetch_assoc($VRES)) {
					
					$nome = $VLinha['nome'];
					$email = $VLinha['email'];
					for($i = 1; $i <= 12; $i++) {
						$metas[$i] = 0;
						switch($i) {
							case 1: $mes[$i] = "Janeiro";break;
							case 2: $mes[$i] = "Fevereiro";break;
							case 3: $mes[$i] = "Março";break;
							case 4: $mes[$i] = "Abril";break;
							case 5: $mes[$i] = "Maio";break;
							case 6: $mes[$i] = "Junho";break;
							case 7: $mes[$i] = "Julho";break;
							case 8: $mes[$i] = "Agosto";break;
							case 9: $mes[$i] = "Setembro";break;
							case 10: $mes[$i] = "Outubro";break;
							case 11: $mes[$i] = "Novembro";break;
							case 12: $mes[$i] = "Dezembro";break;
						}
					}
					$ano = date('Y');
					
					$MSQL = "SELECT valor, inicio FROM lds_nivelmeta WHERE usuario = '$email' AND '$ano' = YEAR(inicio) ORDER BY inicio";
					$MRES = mysqli_query($conn->getLink(), $MSQL);
					while($MLinha = mysqli_fetch_assoc($MRES)) {
						$j = date('n', strtotime($MLinha['inicio']));
						$metas[$j] = $MLinha['valor'];
					}
					
					echo("\n" . '<div class="vmeta">');
					echo("\n" . '<form name="form-meta" onsubmit="submeterForm(this)">');
					echo("\n	<h3>$nome</h3>");
					
					echo('<input type="hidden" name="meta-usuario" id="meta-usuario" value="' . $email . '" />');
					echo('<input type="hidden" name="meta-ano" id="meta-ano" value="' . $ano . '" />');
					for($i = 1; $i <= 12; $i++) {
						echo("\n" . '		<div class="listaMetas">');
						echo("\n" . '			<div class="camposMetas">');
						echo("\n" . '				<div class="colunaMeta"><label>'.$mes[$i].'</label><input name="meta-mes-'.$mes[$i].'" id="meta-mes-'.$mes[$i].'" type="number" value="' . $metas[$i] . '" /></div>');
						echo("\n" . '			</div>');								
						echo("\n" . '		</div>');							
					}
					echo("\n" . '		<button class="btn btn-primary btn-block btn-md" type="submit">Salvar</button>');						
					echo("\n" . '</form>' . "\n");
					echo("\n" . '</div>' . "\n");
				}				
			?>

 

 

estou tentando capturar com este código:

 

var submeterForm = function(formulario) {
	var aux = formulario;
	window.alert(aux);
	return false;
}

Minha rotina não está sendo executada. Alguém poderia me ajudar a executar esta rotina apenas para os forms eu eu submeter?

Share this post


Link to post
Share on other sites

Atribua uma id diferente para cada formulário e crie uma função para monitorar os submits de qualquer formulário da página. Fiz umas pequenas alterações no seu código e funcionou aqui, eu comentei as linhas modificadas no código, tenta aí...

 


<script type="text/javascript" src="../../js/jquery-3.2.1.min.js"></script>
<script>
/*pegar os submits de todos os formulários*/
$(document).ready(function(){
  $("form").submit(function(){
  /*serialize para tranformar o object do formulário em string para poder visualizar no alert*/

   alert("Você esta enviando:" + $(this).serialize());
  return false;
  });
});
</script>
<?php 
$VSQL = "SELECT email, nome FROM lds_usuarios ORDER BY nome";
$VRES = mysqli_query($conn->getLink(), $VSQL);
while($VLinha = mysqli_fetch_assoc($VRES)) {
    
    $nome = $VLinha['nome'];
    $email = $VLinha['email'];
    for($i = 1; $i <= 12; $i++) {
        $metas[$i] = 0;
        switch($i) {
            case 1: $mes[$i] = "Janeiro";break;
            case 2: $mes[$i] = "Fevereiro";break;
            case 3: $mes[$i] = "Março";break;
            case 4: $mes[$i] = "Abril";break;
            case 5: $mes[$i] = "Maio";break;
            case 6: $mes[$i] = "Junho";break;
            case 7: $mes[$i] = "Julho";break;
            case 8: $mes[$i] = "Agosto";break;
            case 9: $mes[$i] = "Setembro";break;
            case 10: $mes[$i] = "Outubro";break;
            case 11: $mes[$i] = "Novembro";break;
            case 12: $mes[$i] = "Dezembro";break;
        }
    }
    $ano = date('Y');
    
    //criar um contador para os id´s dos forms
    $formID = 0;
    $MSQL = "SELECT valor, inicio FROM lds_nivelmeta WHERE usuario = '$email' AND '$ano' = YEAR(inicio) ORDER BY inicio";
    $MRES = mysqli_query($conn->getLink(), $MSQL);
    while($MLinha = mysqli_fetch_assoc($MRES)) {
        $j = date('n', strtotime($MLinha['inicio']));
        $metas[$j] = $MLinha['valor'];
    }
    
    echo("\n" . '<div class="vmeta">');
    //echo("\n" . '<form name="form-meta" onsubmit="submeterForm(this)">');
    //removi a função onsubmit e adicionei o método post para não jogar os dados do formulário na URL
    echo("\n" . '<form name="form-meta" id="' . $formID . ' method="post">');
    echo("\n    <h3>$nome</h3>");
    
    echo('<input type="hidden" name="meta-usuario" id="meta-usuario" value="' . $email . '" />');
    echo('<input type="hidden" name="meta-ano" id="meta-ano" value="' . $ano . '" />');
    for($i = 1; $i <= 12; $i++) {
        echo("\n" . '        <div class="listaMetas">');
        echo("\n" . '            <div class="camposMetas">');
        echo("\n" . '                <div class="colunaMeta"><label>'.$mes[$i].'</label><input name="meta-mes-'.$mes[$i].'" id="meta-mes-'.$mes[$i].'" type="number" value="' . $metas[$i] . '" /></div>');
        echo("\n" . '            </div>');                                
        echo("\n" . '        </div>');                            
    }
    echo("\n" . '        <button class="btn btn-primary btn-block btn-md" type="submit">Salvar</button>');                        
    echo("\n" . '</form>' . "\n");
    echo("\n" . '</div>' . "\n");
    //incrementar o contador das ids dos form´s
    $formID++;
}                
?>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Adriano Costa
      Fala galera!!!
      Eu sou novo na programação e estou precisando de uma ajuda, estou tentando fazer um for dentro dos scriplets mas esta dando erro. É a parte do read do meu crud. Quando eu aço o for através da camada controller ele funciona, mas na pagina jsp ele da um erro.
       
      <%@ page language="java" contentType="text/html; charset=utf-8"
          pageEncoding="utf-8"%>
      <%@page import="model.JavaBeans"%>
      <%@page import="java.util.ArrayList"%>  
      <%
          ArrayList<JavaBeans> lista = (ArrayList<JavaBeans>)request.getAttribute("contatos");
          for (int i = 0; i < lista.size(); i++){
              out.print(lista.get(i).getIdlista());
          }
      %>
       
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="utf-8">
      <title>Lista de Tarefas</title>
      <link rel="stylesheet" href="css/styles.css">
      </head>
      <body>
          <div id= "login-container">
              <h1>Lista de Tarefas</h1>
              <table>
                  <thead>
                      <tr>
                          <th>Código</th>
                          <th>Titulo</th>
                          <th>Descrição</th>
                          <th>Data</th>
                          <th>Status</th>
                          <th>Prioridade</th>
                      </tr>
                  </thead>
                  <tbody>
                      
                  </tbody>
              </table>
              <form name="frmContato" action="listarTarefa">
                  
                  <input type="submit" value="Cadastrar" onclick="validar()">
              </form>
              
          </div>
          <script src="scripts/validador.js"></script>    
      </body>
      </html>
       
      E esse é o erro
       
      HTTP Status 500 – Internal Server Error
      Type Exception Report
      Message An exception occurred processing [/listaTarefas.jsp] at line [8]
      Description The server encountered an unexpected condition that prevented it from fulfilling the request.
      Exception
      org.apache.jasper.JasperException: An exception occurred processing [/listaTarefas.jsp] at line [8] 5: 6: <% 7: ArrayList<JavaBeans> lista = (ArrayList<JavaBeans>)request.getAttribute("contatos"); 8: for (int i = 0; i < lista.size(); i++){ 9: out.print(lista.get(i).getIdlista()); 10: } 11: %> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:611) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:500) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) Root Cause
      java.lang.NullPointerException org.apache.jsp.listaTarefas_jsp._jspService(listaTarefas_jsp.java:126) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) Note A pilha de erros completa da causa principal está disponível nos logs do servidor.
       
       
      esse é o Medoto
       
      // Listar tarefa
              protected void tarefas(HttpServletRequest request, HttpServletResponse response)
                      throws ServletException, IOException {
                  //Criando um objeto que irá receber os dados do JavaBeans
                  ArrayList<JavaBeans> lista = dao.listarTarefa();
                  
                  request.setAttribute("tarefas", lista);
                  RequestDispatcher rd = request.getRequestDispatcher("listaTarefas.jsp");
                  rd.forward(request, response);
                  
                  //Teste de recebimento da lista
                  for(int i = 0; i<lista.size(); i++) {
                      System.out.println(lista.get(i).getIdcon());
                      System.out.println(lista.get(i).getTitulo());
                      System.out.println(lista.get(i).getDescricao());
                      System.out.println(lista.get(i).getData());
                      System.out.println(lista.get(i).getStatus());
                      System.out.println(lista.get(i).getPrioridade());
                  }
              }
          
    • By Leandro T.
      $.ajax({
             
           url: 'ajaxfile2.php?xis=<?php echo $PerguntasRow["pergunta_id"];?>&resx=<?php echo $_SESSION["respon"]; ?>', 
           type: 'POST',
           data: form_data2<?php echo $PerguntasRow["pergunta_id"];?>, 
           dataType: 'json',
           contentType: false,
           processData: false,
             
           success: function (data)  {  }
            }); 
               
              
      }
                       Pessoal, boa tarde! não estou conseguindo fazer o ajaxfile2.php receber os parâmetros deste ajax
       
       
    • By violin101
      Caros Amigos,
       
      saudações...
       
      Desculpa a recorrer ao auxílio dos amigos, mas estou com um pequeno problema que não estou conseguindo entender.
       
      A página inicial do meu Sistema tem um CAROUSEL com um SLIDER que deveria iniciar junto com a página. 
      INFELIZMENTE algumas vezes não inicia e para EXECUTAR o o Slider deve pressionar F5.
       
      Algumas vezes quando o Slider inicia depois de um período para o LOOP, não entendo isso.
       
      Abaixo o código do SLIDER.
      /*----------------------------------------*/ /* 01. Main Slider Ativação e Velocidade do Slide /* /* Como consigo resolver esse problema para o Slider INICIAR com um LOOP infinito /* sem ter que ficar atualizando a página ? /* /*----------------------------------------*/ $(".slider_active").owlCarousel({ loop: true, margin: 0, nav: true, autoplay: true, infinite: true, items: 1, autoplayTimeout: 10000, navText: ["<i class='fa fa-caret-left'></i>", "<i class='fa fa-caret-right'></i>"], dots: true, autoHeight: true, lazyLoad: true });  
      Grato,
       
      Cesar
    • By manolegal
      Boa tarde
      Tenho 5 campos do tipo select no meu formulário.  A seguir um dos campos.
      <div id="resp" class="form-group col-md-3" placeholder="Responsável" title="Pesquisar por Responsável"> <select class="form-control" id="resp" name="resp" placeholder="Responsável" title="Pesquisar por Responsável"> <option value="">Responsável</option> <?php $Sql = "SELECT ..."; $Resultado = ... while ($linha = @pg_fetch_array($Resultado)){. $id_responsavel_bd = $linha["id_responsavel"]; $nome_responsavel_bd = $linha["responsavel"]; if ($resp == $id_responsavel_bd){ echo "<option value='$id_responsavel_bd' selected = 'selected'>$nome_responsavel_bd</option>";} else{ echo "<option value='$id_responsavel_bd'>$nome_responsavel_bd</option>";} } ?> </select> </div> Tenho uma função jquery que ao selecionar qualquer um destes campos, faz uma requisição ajax para atualizar uma div do meu form.
      <script type="text/javascript"> $(document).ready(function(){ $('select').change(function(){ // Todos selects $('form').submit(function(){ var dados = $(this).serialize(); $.ajax({ type: "POST", url: 'arquivo_ajax.php', dataType: 'html', data: dados, }).done(function(data){ //console.log(data); $("#list").empty().html(data); }); return false; }); $("#meu_form").trigger('submit'); }); }); </script> Ao abrir o formulário e fazer a primeira seleção de algum campo do tipo select, é gerada uma solicitação ajax.
      O problema é que a cada nova seleção deste campo e de algum outro campo, ao invés de realizar UMA ÚNICA REQUISIÇÃO, está aumentando o número de requisições a cada nova ação.
      Como não tenho muitos conhecimentos em jquery/ajax em minha dúvida:
      - É normal ir aumentando o número de requisições?
      - Deveria sempre realizar apenas uma requisição (imagino que seja correto)?
      - Meu código está correto? Se não está, onde estou errando?
      Desde já agradeço pela colaboração.
       
       
    • By Person
      Estou fazendo um protótipo de e-commerce com aps clássico e sql server, na parte de administração, o usuário administrativo pode alterar o status do pedido,  para isso ele clica no botão de alterar na pagina principal e é redirecionado para um formulário onde tenho as options, para que ele mude o status, coloquei um botão para que ele passe os parâmetros  (id_pedido e id_status_pedido) para a pagina de manutenção, onde é feito o update e o envio de e-mail com as atualizações. Mas quero retirar esse botão e fazer com que, assim que eu clique em uma opção, ele altere, sem eu precisar ser redirecionado para a tela de manutenção, isso com o Ajax se possível.
       
      <body> <% call Abredb() cod = Request.QueryString("cod") evt = Request.QueryString("evt") if cod <> "" then cod = cint(cod) end if if ucase(evt) = "ALT" then sql = "exec SP_TR32_status_frm_SEL" 'Response.Write(sql) 'Response.End() set rs = dbWeb.execute(sql) estrato = rs("id_status_pedido") bot = "Alterar" end if %> <div class="container"> <div class="titulo">Formulario</div> <form action="manu_pedido.asp" method="post" enctype="multipart/form-data"> <div class="detalhes-formulario"> <div class="input-box"> <span class="detalhes">status</span> <select class="form-control" name = "status"> <% do while not rs.eof%> <option value="<%=rs("id_status_pedido")%>"><%=rs("descricao")%></option> <% rs.movenext loop rs.close set rs = nothing %> </select> </div> </div> <button><a href="/treinamento/Thau/mini_mercado/adm/manu_pedido.asp?evt=alt&cod="<%=cod%>"&estrato="<%rs("id_status_pedido")%> </form> </div> <br> </body> <%call Fechadb()%> </html> Abaixo está o código da minha pagina de manutenção, no qual acontece a alteração do status
      <% Function ZerosEsquerda(Num,tam) Dim Zero Num = Trim(Num) Zero = "" For i = Len(Num) To tam - 1 Zero = "0" & Zero Next ZerosEsquerda = Trim(Zero & Num) End Function byteCount = Request.TotalBytes RequestBin = Request.BinaryRead(byteCount) Set UploadRequest = CreateObject("Scripting.Dictionary") BuildUploadRequest RequestBin 'opc = request.QueryString("opc") 'if opc = "" then 'cod = UploadRequest.Item("hfcod").Item("Value") 'botao = UploadRequest.Item("botao").Item("Value") 'estrato = UploadRequest.Item("estrato").Item("Value") 'end if session.LCID = 1046 call Abredb() if botao = "Alterar" then ' ALTERANDO OS DADOS RECEBIDOS NA TABELA sql = "exec SP_TR32_pedido_UPD "&cod&", '"&estrato&"'" 'response.write sql 'response.end dbWeb.execute(sql) str_html = "" str_html = str_html & "<HTML><BODY BGCOLOR=#0000FF>" str_html = str_html & "<h1>produtos</h1>" sql ="SP_TR32_email__itens_sel "&cod&"" set rs = dbWeb.execute(sql) str_html = str_html & "<table>" str_html = str_html & "<thead>" str_html = str_html & " <tr>" str_html = str_html & "<th>Produtos</th>" str_html = str_html & "<th>quantidade</th>" str_html = str_html & " <th>Total</th>" str_html = str_html & "</tr>" str_html = str_html & " </thead>" str_html = str_html & "<tbody>" do while not rs.eof str_html = str_html & "<tr>" str_html = str_html & "<td >"&rs("produto")&"</td>" str_html = str_html & "<td >"&rs("quantidade")&"</td>" str_html = str_html & "<td >"&rs("total")&"</td>" str_html = str_html & "</tr>" rs.movenext loop rs.close set rs = nothing str_html = str_html & " </tbody>" str_html = str_html & "</table>" str_html = str_html & "</BODY></HTML>" sql = "SP_TR32_email_sel "&cod&"" set rs = dbWeb.execute(sql) if estrato<>"" then Set ObjMail = Server.CreateObject("Cdonts.Newmail") objMail.Subject = "Atualização de pedido" objMail.From = "Porto Dourado <contato@email.websupply.com.br>" objMail.To = "request("email")" objMail.BodyFormat = 0 objMail.MailFormat = 0 objMail.Body = "Olá"&" "&rs("nome")&" "&rs("sobrenome")&", </br> Houve uma atualização em seu pedido pedido: "&rs("id_pedido")&" </br> o status mudou para: "&rs("descricao")&" </br> endereço de entrega: "&rs("cep")&", "&rs("rua")&", "&rs("bairro")&", "&rs("numero")&", "&rs("cidade")&", "&rs("Uf")&" </br>Total pedido: "&rs("total_pedido")&" </br> "& str_html &" </br></br>"&" Atentamente,"&" </br> "&"Equipe Porto dourado"&" </br></br> "&"Para entrar em contato com a equipe de suporte, entre em contato com o email ou ligue para nossa central no numero " objMail.Send Set objMail = nothing envio = true %> <script> alert('email com alteração enviado com sucesso!'); </script> <% end if if estrato = 6 then sql = "exec SP_TR32_adm_data_envio_UPD "&cod&"" dbWeb.execute(sql) end if if estrato = 4 then sql = "exec SP_TR32_adm_data_entregue_UPD "&cod&"" dbWeb.execute(sql) end if %> <script> alert("Dados alterado com sucesso!") parent.location = "cst_pedido.asp" </script> <% end if %> <%call Fechadb()%>  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.