Jump to content
Gilsoney

[Resolvido] Campos com mesmo nome em um formulário javascript

Recommended Posts

Calma, parece loucura, mas o que eu quero tem uma lógica.

Gostaria de saber se tem como eu tratar vários campos de maneiras diferentes em um mesmo formulário com todos os campos com o mesmo nome.

Eu tenho um código que muda a cor de fundo do formulário de acordo com o que o usuário digita: Se ele digitar "OK" fica verde, se digitar "ATRASO" fica vermelho. Porém, eu quero que esse formulário tenha vários campos com o mesmo nome, mas mude a cor de cada um de acordo com o conteúdo. Segue o código do meu formulário funcionando para apenas 1 campo, FUNCIONANDO.

 

<html>
<head>
<script type="text/javascript"> 
function verifica() {
var campo = document.nomeform; 
if(campo.sta.value == "OK"){ 
document.getElementById("sta").style.background = "green"; 
document.getElementById("sta").style.color = "white";   
}
if(campo.sta.value == "ATRASO"){ 
document.getElementById("sta").style.background = "red"; 
document.getElementById("sta").style.color = "white";  
}
}
</script> 
</head>
<body>
<table border="1">
<form name="nomeform" id="for" action="#.html">
<tr>
<td>
<center>Status
</td>
</tr>
<tr>
<td>
<input type="text" name="sta" value=""  id="sta" style="font-weight: bold; text-align:center " onkeyup="verifica()">
</td>
</tr>
</table>
<input type="submit" value="Confirma">
</form>
</body>
</html>

Eu quero adicionar vários campos com o mesmo nome, mas que a cor mude em cada um de acordo com o preenchimento. Como seria:

<html>
<head>
<script type="text/javascript"> 
function verifica() {
var campo = document.nomeform; 
if(campo.sta.value == "OK"){ 
document.getElementById("sta").style.background = "green"; 
document.getElementById("sta").style.color = "white";   
}
if(campo.sta.value == "ATRASO"){ 

document.getElementById("sta").style.background = "red"; 
document.getElementById("sta").style.color = "white";  
}
}
</script> 
</head>
<body>

<table border="1">
<form name="nomeform" id="for" action="#.html">
<tr>
<td>
<center>Status
</td>
<td>
<center>Status 1
</td>
<td>
<center>Status 2
</td>
</tr>
<tr>
<td>
<input type="text" name="sta" value=""  id="sta" style="font-weight: bold; text-align:center " onkeyup="verifica()">
</td>
<td>
<input type="text" name="sta" value=""  id="sta" style="font-weight: bold; text-align:center " onkeyup="verifica()">
</td>
<td>
<input type="text" name="sta" value=""  id="sta" style="font-weight: bold; text-align:center " onkeyup="verifica()">
</td>
</tr>
</table>
<input type="submit" value="Confirma">
</form>
</body>
</html>

 

Share this post


Link to post
Share on other sites

É incorreto ter mais de um elemento com o mesmo ID no documento, não faça isso pois pode ter problemas graves.

 

Sugiro que você passe o elemento pela function, dentro da function você obtem ele e trabalha em cima.

 

Utilize onchange no lugar do onkeyup, pois se utilizar o último a cada caractere digitado será acionado a function, acredito que não seja isso que deseja.

 

Algo assim:

function verifica(elemento) {
	if(elemento.value == "OK"){ 
	document.getElementById("sta").style.background = "green"; 
	document.getElementById("sta").style.color = "white";   
}
<input type="text" name="sta" value=""  id="sta" style="font-weight: bold; text-align:center " onchange="verifica(this)">

 

Share this post


Link to post
Share on other sites

Perdão, eu expliquei errado. Será o mesmo form repetido várias vezes na mesma página, por exemplo, eu vou listar todos os registros que estiverem em uma tabela e vou exibi-los através de um form que se repetirá várias vezes na página, de acordo com a quantidade de clientes. Se o cliente estiver com status "OK" quero que o campo do formulário receba a formatação a cima. Com apenas um registro no banco ele aplica a formatação, para vários, não.

Share this post


Link to post
Share on other sites

Olá...

 

Aconselho fazer uso do CSS para estilizar seus elementos e jQuery para manipulá-los.

Fiz um exemplo funcional para você ver como funciona e estudar.

Em vez de id="sta" eu utilizo class="sta". 

 

<html>
  <head>
    
    <style>
      .sta{
        font-weight: bold; 
        text-align:center;
        text-transform: uppercase;
      }
      .sta.ok{
        background: green;
        color: white;
      }
      .sta.atraso{
        background: red;
        color: white;
      }
    </style>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script type="text/javascript"> 
      $(document).ready(function(){
        $('.sta').change(function(){
          $(this).toggleClass('ok',     $(this).val().toUpperCase() == "OK"    );
          $(this).toggleClass('atraso', $(this).val().toUpperCase() == "ATRASO");
        });
      });
    </script> 
    
  </head>
<body>

<table border="1">
<form name="nomeform" id="for" action="#.html">
<tr>
<td>
<center>Status
</td>
<td>
<center>Status 1
</td>
<td>
<center>Status 2
</td>
</tr>
<tr>
<td>
<input type="text" name="sta" value="" class="sta"/>
</td>
<td>
<input type="text" name="sta" value="" class="sta"/>
</td>
<td>
<input type="text" name="sta" value="" class="sta"/>
</td>
</tr>
</table>
<input type="submit" value="Confirma"/>
</form>
</body>
</html>

 

  • Gostei 1

Share this post


Link to post
Share on other sites

 

 Mano, está funcionando em parte, obrigado. Mas como eu faço para mudar de cor após digitar o texto, ele está mudando de cor apenas quando sai do input. Eu quero que após o texto ser digitado igual ao da função, ele mude de cor, tipo um onkeyup.

Share this post


Link to post
Share on other sites

mude de

 $('.sta').change(function(){

para

 $('.sta').on('keyup', function(){
  • Gostei 1

Share this post


Link to post
Share on other sites
39 minutos atrás, William Bruno disse:

mude de


 $('.sta').change(function(){

para


 $('.sta').on('keyup', function(){

Fiz isso, mas só está mudando a cor quando aperta TAB ou muda de campo com o mouse.

Share this post


Link to post
Share on other sites
3 horas atrás, Gilsoney disse:

Fiz isso, mas só está mudando a cor quando aperta TAB ou muda de campo com o mouse.

 

Testei aqui da forma qu e o William mostrou e funcionou blz, verifica se não digitou algo errado ai, ve no console também.

Share this post


Link to post
Share on other sites
12 horas atrás, gRoOvE disse:

 

Testei aqui da forma qu e o William mostrou e funcionou blz, verifica se não digitou algo errado ai, ve no console também.

Ok, vou tentar.

Share this post


Link to post
Share on other sites
15 horas atrás, Gilsoney disse:

Fiz isso, mas só está mudando a cor quando aperta TAB ou muda de campo com o mouse.

Realmente, eu estava digitando algo errado. Obrigado, tudo certo!

  • Gostei 1

Share this post


Link to post
Share on other sites

Pessoal, obrigado pelas respostas de vocês, me ajudou muito. Porém, pensei que esta solução iria se adaptar ao meu problema mas pelo visto fiz a pergunta errada. Não sei se devo reabrir o tópico ou deixar como resolvido e perguntar aqui mas lá vai. No meu sistema, eu busco vários registros de uma tabela e esses registros aparecem para mim em um formulário o retorno da consulta é um form, como o citado a cima, mas com apenas um campo chamado status. Como eu faria para esse campo mudar de cor de acordo com o preenchimento em cada formulário. Por exemplo: eu tenho 3 registros na minha tabela (ou seja, o resultado será 3 forms com o mesmo nome e os mesmos campos, já que ele vai repetir os forms do resultado e mudar apenas o preenchimento do input, que pode variar de "OK" ou "ATRASO"). Quando a busca trazer os 3 registros: Ex: Registro 1: campo "status" = "OK", Registro 2: campo "status" = "ATRASO", Registro 3: campo "status" = "OK". Eu gostaria que o campo mudasse de cor para cada formulário, de acordo com o preenchimento dos inputs de cada um. 

Share this post


Link to post
Share on other sites
7 horas atrás, Gilsoney disse:

Pessoal, obrigado pelas respostas de vocês, me ajudou muito. Porém, pensei que esta solução iria se adaptar ao meu problema mas pelo visto fiz a pergunta errada. Não sei se devo reabrir o tópico ou deixar como resolvido e perguntar aqui mas lá vai. No meu sistema, eu busco vários registros de uma tabela e esses registros aparecem para mim em um formulário o retorno da consulta é um form, como o citado a cima, mas com apenas um campo chamado status. Como eu faria para esse campo mudar de cor de acordo com o preenchimento em cada formulário. Por exemplo: eu tenho 3 registros na minha tabela (ou seja, o resultado será 3 forms com o mesmo nome e os mesmos campos, já que ele vai repetir os forms do resultado e mudar apenas o preenchimento do input, que pode variar de "OK" ou "ATRASO"). Quando a busca trazer os 3 registros: Ex: Registro 1: campo "status" = "OK", Registro 2: campo "status" = "ATRASO", Registro 3: campo "status" = "OK". Eu gostaria que o campo mudasse de cor para cada formulário, de acordo com o preenchimento dos inputs de cada um. 

Na verdade, testei o código e vi que funciona para vários forms na mesma página, porém no meu sistema que não está funcionando, então é algo que estou deixando passar. Obrigado a todos que me ajudaram.

Share this post


Link to post
Share on other sites

Fiquei na dúvida se estes inputs serão preenchidos automaticamente durante o retorno da busca. Se for isso, então o procedimento é outro. Caso você ainda queira manter o procedimento de alterar a cor do <input> conforme o usuário for digitando, e se estes inputs forem criados em tempo de execução (o que parece ser), então substitua esta linha:

 $('.sta').on('keyup', function(){

por esta:

$(document).on("keyup",".sta",function(){

 

Share this post


Link to post
Share on other sites

Caso os inputs criados após o retorno da busca já venham preenchidos com "OK" ou "ATRASO", então você pode fazer com que o cada input receba no seu atributo class o seu respectivo status. O que quero dizer é que o retorno da sua busca já retorne cada input com sua classe definida. Por exemplo: 

 

Se o status for "OK", faça com que a busca já retorne o input com a classe "ok" atribuída a ele:

<input type="text" name="sta" value="" class="sta ok"/>

Se o status for "ATRASO", faça com que a busca já retorne o input com a classe "atraso" atribuída a ele:

<input type="text" name="sta" value="" class="sta atraso"/>

Entendeu? Nesse caso você precisa criar uma condição no seu script que retorna esta busca.

Share this post


Link to post
Share on other sites
14 horas atrás, Eziquiel disse:

Caso os inputs criados após o retorno da busca já venham preenchidos com "OK" ou "ATRASO", então você pode fazer com que o cada input receba no seu atributo class o seu respectivo status. O que quero dizer é que o retorno da sua busca já retorne cada input com sua classe definida. Por exemplo: 

 

Se o status for "OK", faça com que a busca já retorne o input com a classe "ok" atribuída a ele:


<input type="text" name="sta" value="" class="sta ok"/>

Se o status for "ATRASO", faça com que a busca já retorne o input com a classe "atraso" atribuída a ele:


<input type="text" name="sta" value="" class="sta atraso"/>

Entendeu? Nesse caso você precisa criar uma condição no seu script que retorna esta busca.

É exatamente isso, os inputs virão preenchidos. Você tem alguma dica de como eu faria essa condição para a class? Veja minha consulta. O campo "status_pagamento" é o campo "status" que usei neste tópico. (Por favor, perdoe a falta de identação).

<html xmlns="http://www.w3.org/1999/xhtml">
<head>  
 <title>Status</title> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script type="text/javascript"> 
      $(document).ready(function(){
        $('.status_pagamento').on('keyup', function(){
          $(this).toggleClass('ok',     $(this).val().toUpperCase() == "OK"    );
          $(this).toggleClass('atraso', $(this).val().toUpperCase() == "ATRASO");
        });
      });
    </script>
	  <style>
      .status_pagamento{
        font-weight: bold; 
        text-align:center;
        text-transform: uppercase;
      }
      .status_pagamento.ok{
        background: green;
        color: white;
      }
      .status_pagamento.atraso{
        background: red;
        color: white;
      }
    </style>
 </head> 
 <body>
<?php
try {
	$pdo = new PDO( 'mysql:host=localhost;dbname=bd' , 'user' , 'senha' );
	$pdo->setAttribute( PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION );	
	$stm = $pdo->prepare( "SELECT * FROM `cliente` ORDER BY nome" );
	$stm->bindParam( ':apelido' , $usuario , PDO::PARAM_STR );
	if ( $stm->execute() ) {		
		foreach ( $stm->fetchAll( PDO::FETCH_OBJ ) as $usuario ) {
          //A PARTIR DE AQUI, O CÓDIGO QUE VAI EXIBIR OS RESULTADOS EM UM FORM
		echo "<table width='auto'  cellspacing='1' cellpadding='0' bgcolor='white' layout='fixed' border='1'>
  <tr>
	 <td width='auto' ><font color='blue' size='2'><center><b>STATUS</td>	  
  </tr>  
  <t
  <form name='cli'  action='confirmar.php' method='post'>  		//STATUS EXIBIDO AQUI, PODE SER: OK OU ATRASO
    <td><center><input type='text' class='status_pagamento'  name='status_pagamento'  value='$usuario->status_pagamento'></td> 
	</form>
  </tr>  
</table>
</fieldset>";	
		} 
	}		
} catch ( PDOException $e ) {
	var_dump( $e->getMessage() );	
} 
?>	
</body>
</html>

 

Share this post


Link to post
Share on other sites

Olá. Segue uma das maneiras.

 

Antes do echo "<table... defina uma variavel conforme abaixo:

 

$classe_status = strtolower($usuario->status_pagamento);

 

Aqui convertemos a descrição "OK" ou "ATRASO" para minúsculo, que será exatamente as classes que utilizamos. Essa variável será atualuzada a cada registro lido, antes de criar (retornar) o elemento input.

 

Agora, inclua o conteúdo dessa variavél na parte onde a classe do elemento é definida. Exemplo.

 

class='status_pagamento $classe_status'

Share this post


Link to post
Share on other sites
Em 01/01/2018 at 07:54, Eziquiel disse:

Olá. Segue uma das maneiras.

 

Antes do echo "<table... defina uma variavel conforme abaixo:

 

$classe_status = strtolower($usuario->status_pagamento);

 

Aqui convertemos a descrição "OK" ou "ATRASO" para minúsculo, que será exatamente as classes que utilizamos. Essa variável será atualuzada a cada registro lido, antes de criar (retornar) o elemento input.

 

Agora, inclua o conteúdo dessa variavél na parte onde a classe do elemento é definida. Exemplo.

 


class='status_pagamento $classe_status'

Eu fiz, ficou assim, porém não alterou nada :(

<html xmlns="http://www.w3.org/1999/xhtml">
<head>  
 <title>Status</title> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script type="text/javascript"> 
      $(document).ready(function(){
        $('.status_pagamento').on('keyup', function(){
          $(this).toggleClass('ok',     $(this).val().toUpperCase() == "OK"    );
          $(this).toggleClass('atraso', $(this).val().toUpperCase() == "ATRASO");
        });
      });
    </script>
	  <style>
      .status_pagamento{
        font-weight: bold; 
        text-align:center;
        text-transform: uppercase;
      }
      .status_pagamento.ok{
        background: green;
        color: white;
      }
      .status_pagamento.atraso{
        background: red;
        color: white;
      }
    </style>
 </head> 
 <body>
<?php
try {
	$pdo = new PDO( 'mysql:host=localhost;dbname=bd' , 'user' , 'senha' );
	$pdo->setAttribute( PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION );	
	$stm = $pdo->prepare( "SELECT * FROM `cliente` ORDER BY nome" );
	$stm->bindParam( ':apelido' , $usuario , PDO::PARAM_STR );
	if ( $stm->execute() ) {		
		foreach ( $stm->fetchAll( PDO::FETCH_OBJ ) as $usuario ) {
          $classe_status = strtolower($usuario->status_pagamento);
          //A PARTIR DE AQUI, O CÓDIGO QUE VAI EXIBIR OS RESULTADOS EM UM FORM
          
		echo "<table width='auto'  cellspacing='1' cellpadding='0' bgcolor='white' layout='fixed' border='1'>
  <tr>
	 <td width='auto' ><font color='blue' size='2'><center><b>STATUS</td>	  
  </tr>  
  <t
  <form name='cli'  action='confirmar.php' method='post'>  		//STATUS EXIBIDO AQUI, PODE SER: OK OU ATRASO
    <td><center><input type='text' class='status_pagamento $classe_status'  name='status_pagamento'  value='$usuario->status_pagamento'></td> 
	</form>
  </tr>  
</table>
</fieldset>";	
		} 
	}		
} catch ( PDOException $e ) {
	var_dump( $e->getMessage() );	
} 
?>	
</body>
</html>

 

Share this post


Link to post
Share on other sites

Olá.... 

Execute o código que lhe passei, e depois entre no navegador (modo inspecionar) e verifique se foi adicionado a classe "ok" ou "atraso" ao seu input. Depois me diga.

Share this post


Link to post
Share on other sites
23 horas atrás, Eziquiel disse:

Olá.... 

Execute o código que lhe passei, e depois entre no navegador (modo inspecionar) e verifique se foi adicionado a classe "ok" ou "atraso" ao seu input. Depois me diga.

Ok. 

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 NaPraia
      Tenho uma aplicação(projeto) java J1 onde tenho um registro.
      Eu gostaria de enviar o valor desse registro para outra aplicação J2.
       
      Como posso fazer isso?
      Estou utilizando o eclipse
    • By fideles
      Senhores, um dúvida e acho que vocês podem me ajudar a exclarecer ou mudar o codigo.
       
      Tenho um formulario onde pode acrescentar varias linhas com javascript e com um botão para chamar a função e que funciona bacana, codigo abaixo;
      <script type="text/javascript"> $(function () { $(".adicionarCampo").click(function () { novoCampo = $("tr.linhas:first").clone(); novoCampo.find("input").val(""); novoCampo.insertAfter("tr.linhas:last"); removeCampo(); }); }); </script> Tenho uma função em javascript também que faz preencher alguns campos automaticamente com base em um select.
      <script type="text/javascript"> function update(cod_atividade){ $.post("scripts/codigos_atividades.php", {cod_atividade:cod_atividade}, function(retorno){ dados = retorno.split("/"); $('#descricao').val(dados[0]); //alert(dados[0]); }); } </script>  
      O problema é que nos input, nos nomes eu coloquei colchetes no final, uma vez que eu tenho um array para gravar tudo de uma vez no banco.
      <input name="descricao[]" type="text" required="required" id="descricao" size="45" maxlength="255" readonly="readonly" /> So  que no script acima, ele direciona os inputs pelo ID, como o ID é unico, como que eu faço para ele reconher cada linha acrecentada conforme o 1º JS?
       
      Ex: 
      Cliquei na primeira linha, selecionei uma opção no select e preencheu o campo descrição
      Ao adicionar uma segunda linha, como o id é unico, ele não preenche, acaba alterando a primeira linha novamente.
       
      Alguém sugere algo que eu consiga ele identificar cada linha acrescentada e preenche o campo daquela respectiva linha?
       
      Obrigado desde já.
       
       
    • By kaayasinho
      Boa tarde Pessoal tudo bom?
      Durante um tempo eu fui estudante de programação, para web. E esse forum me foi muito util pois aprendi muitas coisas, e tirei muitas duvidas com todos os participantes. Por outro lado não segui a carreira de programado pois tive outras oportunidades.
       
      Em fim, estou com um projeto de criar uma plataforma online para eventos, e estou tentando montar um time chegar nesse objetivo. Por hora ainda estou tentando juntando a equipe necessária para isso acontecer.
       
      Pela pouca experiência que tive na programação, sei que fazer essa plataforma é bem complexa principalmente com as necessidades que vamos englobar, porém o mercado esta escasso de plataformas flexíveis, no sentido de oferecer algumas ferramentas básicas na comunicação. apesar de ja existir algumas plataformas no mercado.
       
      Resumo:
      1-) Procuro por programadores backend com experiência (não sei exatamente informar a linguagem) mas chuto que Java, Javascript e PHP sejam fundamentais. (sei que abusaremos muito do AJAX)
       
      2-) Programador FrontEnd, com experiência. E que tenha principalmente em boas praticas, pois código sujo cheio de plugins tornará a plataforma pesada, e cheia de bugs.
       
      PS: Não procuro nada pronto, claro que plugins coisas são inevitáveis porém para funcionarmos Lisos com menos bugs possíveis procuro algo feito “artesanalmente” rsrs.
       
      Obs: o projeto esta no inicio ainda, estou juntando contatos para chegar no objetivo, e assim que tiver um contato gostaria de poder conversar trocar ideias, caso seja um projeto onde você se identifique nada impede de sermos parceiros ter uma % sobre o negocio.
       
       
      Obs2: Desculpem se escrevi meio enrolado ou esta complicado de entender. pois apenas disse plataforma de eventos e não especifiquei nada. mas assim que receber um contato eu passo mais informações com alguns links de exemplos, que é melhor que falar.
       
      E caso aqui seja o lugar correto posso passar mais informações por aqui também.
       
      Seguem alguns exemplos de plataforma de eventos online.
      Download de 2 PDFs de apresentações do mesmo segmento
       
      Site de uma das plataformas porém proximo do que almejamos
      https://www.swaper.com.br/
       
       
      Fico a disposição,
       
      Desculpem se postei no local incorreto
       
    • By jrxxjr
      Sou iniciante em Android, e fiz uma pequena aplicação Android de teste, usando Java, para aprender a utilizar um ListView com botões, e tive um problema. Os botões não funcionam direito, as vezes eu clico em cima do Edit, ele muda a mensagem para clicado, "Edit", confirmando que eu cliquei ai. Mas tem vezes que eu clico no botão Delete, e depois no botão Edit, e o texto não é mudado, ou seja o evento click não funcionou, se eu coloco um break point, no código-fonte, onde está entrando no evento setOnItemClickListener. Mas a mensagem exibida, não está correta.
      E tem um outro erro, de funcionamento do AlertDialog, da mensagem de confirmação de deleção.
      O código-fonte está abaixo.
      Por favor, alguém poderia me ajudar ?
       
      AgendaActivity.java
      package com.test.android.view; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.test.android.model.Agenda; import com.test.android.util.Util; public class AgendaActivity extends AppCompatActivity { ListView listview; MyArrayAdapter agendaArrayAdapter; ArrayList<AgendaTo> agendaArray = new ArrayList<AgendaTo>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_agenda); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("Nick", 50))); agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("John", 50))); agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("Anthony", 50))); agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("James", 50))); agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("Jack", 50))); agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("Jeremy", 50))); agendaArray.add(new AgendaTo(sdf.format(new Date()),Util.fillSpaces("Long", 50))); agendaArrayAdapter = new MyArrayAdapter(AgendaActivity.this, R.layout.list_item, agendaArray); listview = (ListView) findViewById(R.id.listView); listview.setItemsCanFocus(false); listview.setAdapter(agendaArrayAdapter); listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, final int position, long id) { Toast.makeText(AgendaActivity.this, "List Item Clicked:" + position, Toast.LENGTH_LONG) .show(); } }); } } MyArrayAdapter.java
      package com.test.android.view; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import java.text.SimpleDateFormat; import java.util.ArrayList; public class MyArrayAdapter extends ArrayAdapter<AgendaTo> { Context context; int layoutResourceId; ArrayList<AgendaTo> agendas = new ArrayList<AgendaTo>(); public MyArrayAdapter(Context context, int layoutResourceId, ArrayList<AgendaTo> agendas) { super(context, layoutResourceId, agendas); this.layoutResourceId = layoutResourceId; this.context = context; this.agendas = agendas; } @Override public View getView(int position, View convertView, ViewGroup parent) { View item = convertView; AgendaWrapper agendaWrapper = null; if (item == null) { LayoutInflater inflater = ((Activity) context).getLayoutInflater(); item = inflater.inflate(layoutResourceId, parent, false); agendaWrapper = new AgendaWrapper(); agendaWrapper.nome = (TextView) item.findViewById(R.id.textNome); agendaWrapper.data = (TextView) item.findViewById(R.id.textData); agendaWrapper.edit = (Button) item.findViewById(R.id.btnEdit); agendaWrapper.delete = (Button) item.findViewById(R.id.btnDelete); item.setTag(agendaWrapper); } else { agendaWrapper = (AgendaWrapper) item.getTag(); } AgendaTo agenda = agendas.get(position); agendaWrapper.nome.setText(agenda.getNome()); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); agendaWrapper.data.setText(sdf.format(agenda.getData())); agendaWrapper.edit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "Edit", Toast.LENGTH_LONG).show(); } }); final int absolutePsition = position; final AgendaWrapper itemDelete = agendaWrapper; final ViewGroup viewGroup = parent; agendaWrapper.delete.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "Delete " + absolutePsition, Toast.LENGTH_LONG).show(); AlertDialog diaBox = AskOption(itemDelete, absolutePsition, viewGroup); diaBox.show(); } }); return item; } private AlertDialog AskOption(AgendaWrapper agendaWrapper, int position, final ViewGroup viewGroup) { final int deletePosition = position; AlertDialog myQuittingDialogBox = new AlertDialog.Builder(context) .setTitle("Delete") .setMessage("Do you want to Delete") .setPositiveButton("Delete", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { agendas.remove(deletePosition); refreshListView(agendas, viewGroup); dialog.dismiss(); } private void refreshListView(final ArrayList<AgendaTo> agendas, final ViewGroup viewGroup) { final MyArrayAdapter myArrayAdapter = new MyArrayAdapter(context, R.layout.list_item, agendas); final LayoutInflater inflater = ((Activity) context).getLayoutInflater(); final View view = inflater.inflate(layoutResourceId, viewGroup, false); final ListView listview = (ListView) view.findViewById(R.id.listView); listview.setAdapter(myArrayAdapter); } }) .setNegativeButton("cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .create(); return myQuittingDialogBox; } static class AgendaWrapper { TextView nome; TextView data; Button edit; Button delete; } } list_item.xml
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="4dp" tools:context=".AgendaActivity" > <TextView android:id="@+id/textNome" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="Nome:" android:width="50dp" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textData" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textData" android:layout_alignTop="@id/textNome" android:layout_alignRight="@id/textNome" android:layout_alignParentLeft="true" android:layout_marginTop="5dp" android:width="50dp" android:text="Data:" android:textAppearance="?android:attr/dateTextAppearance" android:textSize="16sp" /> <Button android:id="@+id/btnEdit" android:layout_width="80dp" android:layout_height="40dp" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:background="#99CC" android:focusable="false" android:focusableInTouchMode="false" android:text="Edit" android:textColor="#FFFFFF" /> <Button android:id="@+id/btnDelete" android:layout_width="80dp" android:layout_height="40dp" android:layout_alignParentRight="true" android:layout_below="@+id/btnEdit" android:layout_marginTop="3dp" android:background="#99CC" android:focusable="false" android:focusableInTouchMode="false" android:text="Delete" android:textColor="#FFFFFF" /> </RelativeLayout> activity_agenda.xml
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#990044" tools:context="com.test.android.view.AgendaActivity" > <TextView android:id="@+id/listLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:text="Touch List" android:textColor="#FFFFFF" android:textSize="25sp" /> <ListView android:id="@+id/listView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@+id/listLabel" android:layout_marginTop="5dp" android:cacheColorHint="#FFFFFF" /> </RelativeLayout>  
    • By Alisson Hoepers
      Olá! Estou recebendo esse erro no meu log do Wildfly, procurando pela internet não encontrei nada em relação a isso, vejam abaixo o erro:
       
      2020-07-08 00:09:34,699 ERROR [io.undertow.request] (default I/O-4) UT005071: Undertow request failed HttpServerExchange{ CONNECT ext.baidu.com:443}: java.lang.IllegalArgumentException: UT000068: Servlet path match failed     at io.undertow.servlet.handlers.ServletPathMatchesData.getServletHandlerByPath(ServletPathMatchesData.java:83)     at io.undertow.servlet.handlers.ServletPathMatches.getServletHandlerByPath(ServletPathMatches.java:88)     at io.undertow.servlet.handlers.ServletInitialHandler.handleRequest(ServletInitialHandler.java:146)     at io.undertow.server.handlers.HttpContinueReadHandler.handleRequest(HttpContinueReadHandler.java:65)     at io.undertow.server.handlers.PathHandler.handleRequest(PathHandler.java:91)     at org.wildfly.extension.undertow.Host$OptionsHandler.handleRequest(Host.java:399)     at io.undertow.server.handlers.HttpContinueReadHandler.handleRequest(HttpContinueReadHandler.java:65)     at org.wildfly.extension.undertow.Host$AcmeResourceHandler.handleRequest(Host.java:421)     at org.wildfly.extension.undertow.Host$HostRootHandler.handleRequest(Host.java:430)     at io.undertow.server.handlers.NameVirtualHostHandler.handleRequest(NameVirtualHostHandler.java:54)     at io.undertow.server.handlers.error.SimpleErrorPageHandler.handleRequest(SimpleErrorPageHandler.java:78)     at io.undertow.server.handlers.CanonicalPathHandler.handleRequest(CanonicalPathHandler.java:49)     at org.wildfly.extension.undertow.Server$DefaultHostHandler.handleRequest(Server.java:190)     at io.undertow.server.handlers.ChannelUpgradeHandler.handleRequest(ChannelUpgradeHandler.java:211)     at io.undertow.server.protocol.http2.Http2UpgradeHandler.handleRequest(Http2UpgradeHandler.java:102)     at io.undertow.server.handlers.DisallowedMethodsHandler.handleRequest(DisallowedMethodsHandler.java:61)     at io.undertow.server.Connectors.executeRootHandler(Connectors.java:376)     at io.undertow.server.protocol.http.HttpReadListener.handleEventWithNoRunningRequest(HttpReadListener.java:255)     at io.undertow.server.protocol.http.HttpReadListener.handleEvent(HttpReadListener.java:136)     at io.undertow.server.protocol.http.HttpOpenListener.handleEvent(HttpOpenListener.java:162)     at io.undertow.server.protocol.http.HttpOpenListener.handleEvent(HttpOpenListener.java:100)     at io.undertow.server.protocol.http.HttpOpenListener.handleEvent(HttpOpenListener.java:57)     at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)     at org.xnio.ChannelListeners$10.handleEvent(ChannelListeners.java:291)     at org.xnio.ChannelListeners$10.handleEvent(ChannelListeners.java:286)     at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)     at org.xnio.nio.QueuedNioTcpServer$1.run(QueuedNioTcpServer.java:132)     at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:612)     at org.xnio.nio.WorkerThread.run(WorkerThread.java:479) Alguém já passou por isso ou saberia indicar o que poderia ser?
×

Important Information

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