Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pitag346

Subtração com Porcentagem

Recommended Posts

Olá pessoal, beleza ?



não conheço muito javascript então preciso da ajuda de vocês...



no caso oque eu preciso...



TENHO O CAMPO INPUT = VALORTOTAL, DESCONTO, VALOR_COM_DESCONTO



Gostaria de uma função onde ao adicionar o valor total mais o desconto (em porcentagem)...


exibia o valor com desconto (input: Valor_com_Desconto)...


então seria uma subtração do valor total com o desconto (em %).



após isso, tenho um select com as divisões...


no caso o select:



<option value="">N° de Parcelas</option>


<option value="1">1x</option>

<option value="2">2x</option>

<option value="3">3x</option>

<option value="4">4x</option>

<option value="5">5x</option>

<option value="6">6x</option>

<option value="7">7x</option>

<option value="8">8x</option>

<option value="9>9x</option>

<option value="10">10x</option>

<option value="11">11x</option>

<option value="12">12x</option>

</select>


gostaria que ao selecionar o select em alguma das opções dividiria o valor que está no campo "Valor_com_Desconto" e exibia no input:

valor_mensalidade.


Espero que deu pra entender... e espero que me ajudem...

em PHP eu consigo efetuar essas programações..

mas eu quero em javascript para seri instantâneo sem precisar enviar, se é que me entendende...



Obs: tenho muito pouco conhecimento em javascript se pudem me explicar detalhadamente eu agradeceria...


MUITO OBRIGADO DESDE JÁ ! <3







Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode:

usar o operador de subtração -;

usar eventos do DOM;

ter uma boa estrutura;

 

Estrutura

 

(HTML)

<div class="main-value-box">
    <div class="normal">
        <input type="text" value="0"/><!--Valor total-->
    </div>
    <div class="discount">
        <input type="text" value="0"/><!--Valor de esconto-->
    </div>
    <div class="discounted">
        <span>0</span><!--Valor com desconto-->
    </div>
</div>

(JavaScript)

(function(){
    //Fiz essa função para não criar variáveis globais;
    var userValues={
        normal={},discount={}
    };
    userValues.normal.number=
    userValues.discount.number=
    userValues.discounted.number=0;
    //define todos os valores como 0 (valor inicial)
    window.addEventListener("load",function(){
        /*
         * Esse evento ocorre quando a página carrega
         * você não pode modificar o DOM sem a página carregar se o script
         * é importado no header
        */
        for(var key in userValues){
            userValues[key].element=document.getElementsByClassName("main-value-box")[0].getElementsByClassName(key)[0].children[0];
            userValues[key].element.onchange=//ao mudar
            userValues[key].element.onpaste=//ao colar
            userValues[key].element.onkeydown=function(){//ao pressionar tecla
                userValues[key].element.value=userValues[key].element.replace(/-[^0-9]+$/i,"");
                //deixa apenas números no texto com regex;
                userValues[key].number=parseInt(userValues[key].element.value);
                //Muda o valor da propriedade para o valor digitado
                if(isNaN(userValues[key].number))
                    userValues[key].element.value=userValues[key].number=0;
		//Transforma o valor em 0 se é igual à NaN (um número indefinido?)
		if(userValues.normal.number>=userValues["discount"].number){
                    document.getElementsByClassName("main-value-box")[0].getElementsByClassName("discounted")[0].children[0].innerHTML=userValues.normal.number-userValues.discount.number
                    //Atualiza o resultado do valor com desconto;
                }else{
                    //O valor normal é menor que o disconto...
                    //faça algo aqui!
                }
            }
        }
    })
})()

Vou atualizar a resposta para ficar mais informal...

essa seria uma base para a parte do valor.

 

PS: Tirei muitos comentários pq ficou meio estranho, huehue...

PS²: Não vou poder muito ajudar porque minha rede (internet) está caindo toda hora :'(

 

Identificador e propriedade

 

Identificador pode ser nome de uma variável ou propriedade, como:

minhaVar

(que retorna uma variável ou propriedade)

 

- caso não exista, não é jogado um erro. Se você adicionar o identificador window na frente, então só vai retornar undefined (null) se não existir, como:

window.minhaVar

Uma propriedade pode ser chamada filha.

window é o objeto principal (pai) do JavaScript que contém todos os objetos como:

 

document, Audio, addEventListener, Math...

 

Eles são considerados "propriedades" porque estão dentro do objeto window, embora window é opcional; Os momentos úteis de se usar window é quando você quer checar se há uma propriedade nele e, para checar se há propriedade nele há várias maneiras, porém não preciso citar isso aqui.

 

window.addEventListener seria equivalente à addEventListener, e addEventListener é uma função, então você pode chamar ela assim:

addEventListener()

Porém addEventListener requere pelo menos 2 argumentos e ela tem 3 parâmetros.

 

O primeiro param é o nome do evento (em string) e o segundo é o callback (em função).

 

Definir string é como no PHP;

Acho que função também:

function(){alert("Bloco da função")}

Para chamar essa função sem nome declarado você deve usar o operador dos parenthesis (não sei como chamar-los...):

(function(){alert("Bloco da função")})()

Então você leva uma alerta.

 

Para retornar propriedade de objeto você deve usar pontos, como:

meuobjeto.propriedade1.propriedade2

Esse meuobjeto seria algo como isso nesse caso, mas não poderia ser definido apenas dessa forma, porém é a mais simples:

meuobjeto={
    propriedade1:{
        propriedade2:{
        }
    }
}

Todas propriedades que tem propriedades são objetos e arrays também são objetos e podem ter propriedades, mas não apenas "itens".

 

E JavaScript aparenta ser mais simples que PHP em alguns casos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por juniormatrix
      Olá
       
      Achei esse script aqui no fórum mesmo:
       
      $.validator.addMethod( "customEmail", function (value, element) { return this.optional(element) || /^[\w-\.]+@fulano\.com\.br$/i.test(value); }, "Por favor, insira um e-mail válido com o domínio @fulano.com.br" ); $("#formulario").validate({ ignore: ".ignore", rules: { empresa: { required: true }, nome: { required: true }, contato: { required: true }, celular: { required: true }, email: { required: true, email: true, customEmail: true }, }, }); Testei e funcionou perfeitamente, mas gostaria que liberasse mais e-mails válidos, ao invés de apenas um.

      Tem como fazer? 
       
      Se alguém puder ajudar, fico muito grato.
    • Por Alessandro Bodão
      Salve galerinha, passando pra mostrar pra vocês o novo projeto de marca que a Jatobá Estúdio desenvolveu, espero que gostem.   https://www.behance.net/gallery/166555627/Fernanda-Pinheiro-Nutricionista-Esportiva
    • Por rogerblower
      Boas pessoal, estou precisando de um calendário para agenda com crud para agendamento, mas teria que ser free.
      Obrogado.
    • Por Luiz Henrique
      Olá pessoas,
       
      Preciso subtrair 1h da data atual, estou procurando uma forma de fazer isso com o moment mas só encontrei a opção de fazer isso na hora, e depois preciso fazer uma comparação com outra data do mysql, e a data deve eestar no formato Y-m-d H:is, ou se se houover uma forma de comparar hora, já é o suficiente
    • Por Sapinn
      Fala galera! Tenho um site que possui alguns icones que são puxados da biblioteca flaticon , o problema é que de uma hora pra outra esses icones pararam de aparecer. No meu ambiente local funciona, mas no ambiente de produção eles não aparecem e eu recebo o seguinte erro no console: Failed to load resource: the server responded with a status of 404 () 
       
      Alguém saberia como resolver isso?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.