klasss Posted June 7, 2023 at 02:38 PM Report Share #631247 Posted June 7, 2023 at 02:38 PM Criei um script para ir buscar um valor e carregar um conjunto de dados. O formato correto é: 0000-000 Mas quando faço a pesquisa em json só permite que seja neste formato : 0000000 , ou seja, sem o traço. var input = document.querySelector("#CP"); input atual: 1234-567 e agora quero que seja removido o traço . Já tentei desta forma e não funcionou. var CP_semtraco = input.replace(/[-]/g,""); Obrigado pelas dicas! Link to comment Share on other sites More sharing options...
antseq Posted June 7, 2023 at 03:39 PM Report Share #631248 Posted June 7, 2023 at 03:39 PM viva, tens a certeza que não funciona? só por curiosidade experimentei o teu próprio código e parece funcionar. var input = "1234-567"; var CP_semtraco = input.replace(/[-]/g,""); console.log(`${input} => ${CP_semtraco}`); Output: 1234-567 => 1234567 Link to comment Share on other sites More sharing options...
klasss Posted June 7, 2023 at 07:27 PM Author Report Share #631252 Posted June 7, 2023 at 07:27 PM Em 07/06/2023 às 16:39, antseq disse: viva, tens a certeza que não funciona? só por curiosidade experimentei o teu próprio código e parece funcionar. var input = "1234-567"; var CP_semtraco = input.replace(/[-]/g,""); console.log(`${input} => ${CP_semtraco}`); Output: 1234-567 => 1234567 Agora o que parece que me está a falhar é a var CP_semtraco. Aparece a seguinte mensagem : Uncaught ReferenceError: cp_semtraco is not defined at <anonymous>:1:1 Link to comment Share on other sites More sharing options...
Ivo Vicente Posted June 7, 2023 at 09:35 PM Report Share #631256 Posted June 7, 2023 at 09:35 PM Viva Tens que dar um pouco mais de código para ser conseguir ver melhor o que se passa. O regex está ok como disse e testou o @antseq agora depende o que estás a fazer com o resultado a seguir. Qual é a estrutura do JSON onde estás a pesquisa? Como é que estás a fazer a pesquisa? Este tipo de informações ajudam muito para te ajudarmos Feito é melhor que perfeito Link to comment Share on other sites More sharing options...
pwseo Posted June 8, 2023 at 09:06 AM Report Share #631257 Posted June 8, 2023 at 09:06 AM Em 07/06/2023 às 20:27, klasss disse: Agora o que parece que me está a falhar é a var CP_semtraco. Aparece a seguinte mensagem : Uncaught ReferenceError: cp_semtraco is not defined at <anonymous>:1:1 Assumindo que não estás a cometer um erro por diferenças entre os nomes das variáveis (ie. CP_semtraco e cp_semtraco são nomes diferentes), poderás estar a ter problemas com o scope da variável. Como referiu o @Ivo Vicente, será necessário forneceres um pouco mais de contexto para compreendermos melhor qual o problema, dado que isoladamente a regexp utilizada faz o que se pretende -- o que significa que o problema está noutro lado. Link to comment Share on other sites More sharing options...
klasss Posted June 8, 2023 at 09:30 AM Author Report Share #631258 Posted June 8, 2023 at 09:30 AM (edited) var input = document.querySelector("#codigopostal"); var CPsemtraco = input.replace(/[-]/g,""); const request = new XMLHttpRequest(); const url = 'LINKAPI' + CPsemtraco.value; request.open("GET", url); request.send(); Depois apenas recebo os dados e mostro nos campos certos. A mensagem que me aparece agora é : input.replace is not a function Edited June 8, 2023 at 09:36 AM by klasss Link to comment Share on other sites More sharing options...
pwseo Posted June 8, 2023 at 10:01 AM Report Share #631260 Posted June 8, 2023 at 10:01 AM (edited) Qual o tipo de dados de input? Se é o resultado de uma document.querySelector, provavelmente input não é uma string, e como tal, não tem o método replace. A que elemento HTML deste o id #codigopostal? Se for um elemento <input>, então podes referir-te ao texto nele contido através da sua propriedade value: var foo = input.value.replace(/* ... */); Edited June 8, 2023 at 10:06 AM by pwseo Clarificação, dica. Link to comment Share on other sites More sharing options...
klasss Posted June 8, 2023 at 10:18 AM Author Report Share #631262 Posted June 8, 2023 at 10:18 AM Em 08/06/2023 às 11:01, pwseo disse: Qual o tipo de dados de input? Se é o resultado de uma document.querySelector, provavelmente input não é uma string, e como tal, não tem o método replace. A que elemento HTML deste o id #codigopostal? Se for um elemento <input>, então podes referir-te ao texto nele contido através da sua propriedade value: var foo = input.value.replace(/* ... */); O valor de INPUT vem do campo codigo postal. <input type="text" class="form-control" placeholder="Código Postal" id="codigopostal" name="codigopostal" aria-label="Username" aria-describedby="basic-addon1" value="{{old('CP')}}"> <a class="btn btn-secondary" href="" type="button" onclick="myFunction()" data-toggle="modal" role="button" >Preencher atraves de CP</a> Preencho o campo código postal e depois ao pressionar o botão envia o valor do codigo postal para dentro do input. Os valores que lá são: 0000 (4 números) - (traço) 000 (3 números) Link to comment Share on other sites More sharing options...
Solution pwseo Posted June 8, 2023 at 01:55 PM Solution Report Share #631265 Posted June 8, 2023 at 01:55 PM (edited) @klasss Estavas (estás?) a confundir várias coisas. O problema reside no facto da tua variável input ser um elemento HTML <input>, e não a string que representa o texto nele escrito (à qual podes referir-te através da propriedade/atributo .value). Assim sendo, quando estavas a invocar o método .replace, obtinhas o erro de que tal função não existe -- pois a mesma só existe quando aplicada em strings. Portanto, primeiro tens que extrair o texto do <input> e só depois operar no mesmo: var input_element = document.querySelector("#codigopostal"); // elemento <input> var input_text = input.value; // texto contido no <input> var cp_semtraco = input_text.replace(/-/, ""); Saliento a importância de perceber a diferença entre input_element e input_text nesse exemplo (que são, respectivamente, um Element e uma string). Tenta novamente para ver se já conseguiste resolver o problema. Edited June 8, 2023 at 01:56 PM by pwseo highlight, typo Link to comment Share on other sites More sharing options...
klasss Posted June 8, 2023 at 05:07 PM Author Report Share #631266 Posted June 8, 2023 at 05:07 PM Obrigado @pwseo Aqui const url = 'LINKAPI' + CPsemtraco.value; também tinha o value a mais. Depois de retirar e colocar da forma como indicaste já ficou a funcionar 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