Hercles Posted June 3, 2021 at 02:30 PM Report Share #622539 Posted June 3, 2021 at 02:30 PM Olá! Caros estou tentando desenvolver uma função que copia parte de uma string da ultima linha de uma textarea e coloca em uma input do tipo text. A ideia seria quando o usuario digitasse traço, a palavra depois seria colocada numa input text (#a-1) e quando digitasse espaço em uma outra input text ('#a-2). Alguém sabe se isso seria possivel? Vejam o código que eu ja fiz: <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css"> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script> <script> window.oninput = function(event){ var campo = event.target.id; // pega o id do campo que chamou o evento var texto = document.querySelector('#a').value; var nome = texto.substring(texto.lastIndexOf("-")+1); var telefone = texto.substring(texto.lastIndexOf(" ")+1); if(campo == "a"){ document.querySelector('#a-1').value = nome; document.querySelector('#a-2').value = telefone; }; </script> <h2>Estes campo é diretamente automático</h2> <textarea id="a"></textarea></br></br> Nome: <input type="text" id="a-1"><br></br> Telefone: <input type="text" id="a-2"><br></br> Link to comment Share on other sites More sharing options...
Zex Posted June 3, 2021 at 03:42 PM Report Share #622542 Posted June 3, 2021 at 03:42 PM Porque é preciso uma textarea? Porque não processar só depois do utilizador escrever o texto completo? Link to comment Share on other sites More sharing options...
Hercles Posted June 3, 2021 at 10:19 PM Author Report Share #622544 Posted June 3, 2021 at 10:19 PM (edited) A textarea serve como um bloco de notas. Na verdade os dados que ficam lá é o nome e o código do cliente. Depois ele é copiado da textarea e colocado nos dois campos do formulário. Pra evitar de copiar e colar, tive está idéia de automatizar. Depois que o atendimento é feito, os dados do formulário somem e eu preciso que continue as informações da textarea. Edited June 3, 2021 at 10:37 PM by Hercles Erro de digitação Link to comment Share on other sites More sharing options...
Zex Posted June 4, 2021 at 04:36 PM Report Share #622548 Posted June 4, 2021 at 04:36 PM falta fechar a função Link to comment Share on other sites More sharing options...
Solution Zex Posted June 4, 2021 at 05:39 PM Solution Report Share #622549 Posted June 4, 2021 at 05:39 PM (edited) Seria melhor processar apenas depois de carregar em enter e nessa altura processar a última linha com dados. Eis a versão a funcionar com os separadores "-" e " ": <body> <h2>Estes campo é diretamente automático</h2> <textarea id="ta" rows="6" cols="40"></textarea></br></br> Nome: <input type="text" id="nome"><br></br> Telefone: <input type="text" id="fone"><br></br> </body> <script> window.oninput = function(event){ var campo = event.target.id; // pega o id do campo que chamou o evento var texto = document.querySelector('#ta').value; // texto completo var area_linhas = texto.split("\n") var ultima_linha = area_linhas[area_linhas.length-1] if ( ultima_linha[ultima_linha.length-1] == '-' ) { var nome = ultima_linha.substring( 0, ultima_linha.length-1 ) document.querySelector('#nome').value = nome; document.querySelector('#fone').value = ''; } if ( ultima_linha[ultima_linha.length-1] <= ' ' ) { var nome_index = ultima_linha.lastIndexOf( '-' )+1 var fone = ultima_linha.substring( nome_index, ultima_linha.length-1 ) document.querySelector('#fone').value = fone; } } // oninput </script> Edited June 4, 2021 at 08:27 PM by Zex Link to comment Share on other sites More sharing options...
Hercles Posted June 4, 2021 at 09:35 PM Author Report Share #622550 Posted June 4, 2021 at 09:35 PM (edited) 4 horas atrás, Zex disse: Seria melhor processar apenas depois de carregar em enter e nessa altura processar a última linha com dados. Eis a versão a funcionar com os separadores "-" e " ": <body> <h2>Estes campo é diretamente automático</h2> <textarea id="ta" rows="6" cols="40"></textarea></br></br> Nome: <input type="text" id="nome"><br></br> Telefone: <input type="text" id="fone"><br></br> </body> <script> window.oninput = function(event){ var campo = event.target.id; // pega o id do campo que chamou o evento var texto = document.querySelector('#ta').value; // texto completo var area_linhas = texto.split("\n") var ultima_linha = area_linhas[area_linhas.length-1] if ( ultima_linha[ultima_linha.length-1] == '-' ) { var nome = ultima_linha.substring( 0, ultima_linha.length-1 ) document.querySelector('#nome').value = nome; document.querySelector('#fone').value = ''; } if ( ultima_linha[ultima_linha.length-1] <= ' ' ) { var nome_index = ultima_linha.lastIndexOf( '-' )+1 var fone = ultima_linha.substring( nome_index, ultima_linha.length-1 ) document.querySelector('#fone').value = fone; } } // oninput </script> Funciona. Vendo o seu código tive uma outra idéia. Será que é possível colocar num array a ultima linha separarando por "-" aí pelo número do array poderia colocar nos campos. Melhor seria se fosse possível a linha que o mouse estivese. Edited June 4, 2021 at 09:42 PM by Hercles Adicionei mais informação Link to comment Share on other sites More sharing options...
Zex Posted June 4, 2021 at 11:49 PM Report Share #622551 Posted June 4, 2021 at 11:49 PM Pode-se obter a linha onde está o cursor com cursor_pos = texto.selectionStart; Link to comment Share on other sites More sharing options...
Hercles Posted June 6, 2021 at 06:34 PM Author Report Share #622565 Posted June 6, 2021 at 06:34 PM (edited) Em 05/06/2021 às 00:49, Zex disse: Pode-se obter a linha onde está o cursor com cursor_pos = texto.selectionStart; Este código não deveria funcionar? <script> var campo = event.target.id; // pega o id do campo que chamou o evento var texto = document.querySelector('#ta').value; // texto completo cursor_pos = texto.selectionStart; var linha = cursor_pos.split("-"); var nome = linha[0]; var telefone = linha[1]; document.querySelector('#nome').value = nome; document.querySelector('#fone').value = telefone; </script> Edited June 13, 2021 at 12:57 PM by pwseo formatação de código Link to comment Share on other sites More sharing options...
Hercles Posted June 6, 2021 at 10:50 PM Author Report Share #622567 Posted June 6, 2021 at 10:50 PM (edited) Fiz este código abaixo . Não consegui fazer com que seja na linha onde o cursor estiver. <body> <h2>Estes campo é diretamente automático</h2> <textarea id="ta" rows="6" cols="40"></textarea></br></br> Nome: <input type="text" id="nome"><br></br> Telefone: <input type="text" id="fone"><br></br> </body> <script> window.oninput = function(event){ var texto = document.querySelector('#ta').value; // texto completo var area_linhas = texto.split("\n") var ultima_linha = area_linhas[area_linhas.length-1] var linha = ultima_linha.split(".") if (linha.length == 1) { document.querySelector('#nome').value = linha[0]; document.querySelector('#fone').value = ""; } if (linha.length == 2) { var final = ultima_linha[linha.length - 1]; document.querySelector('#nome').value = linha[0]; document.querySelector('#fone').value = linha[1]; } } </script> Edited June 13, 2021 at 12:57 PM by pwseo formatação de código Link to comment Share on other sites More sharing options...
Zex Posted June 7, 2021 at 05:42 PM Report Share #622585 Posted June 7, 2021 at 05:42 PM 18 horas atrás, Hercles disse: Não consegui fazer com que seja na linha onde o cursor estiver. Para usar a posição do CURSOR o melhor é esquecer o EVENTO. Posiciona-se o cursor e clica-se num botão para processar a linha seleccionada. Link to comment Share on other sites More sharing options...
Hercles Posted June 7, 2021 at 08:27 PM Author Report Share #622586 Posted June 7, 2021 at 08:27 PM 2 horas atrás, Zex disse: Para usar a posição do CURSOR o melhor é esquecer o EVENTO. Posiciona-se o cursor e clica-se num botão para processar a linha seleccionada. Entendi. Obrigado pela ajuda. Com o que você me disse já resolve. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now