Ir para conteúdo
Fórum Script Brasil
  • 0

5 inputs e activar botão quando necessário


Tiko165

Pergunta

Estou a criar um formulário, e ele contem 5 inputs, todos eles só permitem numeros, e um botão de confirmação para enviar os dados para uma base de dados.


Algo deste genero: - http://jsfiddle.net/oood7co1/1/


O que eu pretendo, é o seguinte:
- Caso os 5 inputs estejam com valor 0, o botão esteja activo:
- Caso altere algum valor num dos inputs, o botão active, para fazer update na BD;
- Ao ler os valores no input da BD, só activar o botão, assim que tambem os valores forem alterados;


E pretendia tambem, saber como fazer,
Ao sair da página, caso tenha alterado um dos valores dos inputs, aparecer um aviso do genero "Quer sair sem gravar?".

Como posso fazer estes dois passos?

Link para o comentário
Compartilhar em outros sites

18 respostass a esta questão

Posts Recomendados

  • 0

Pretendo fazer isto agora de outra forma.

Deram-me a ideia de colocar por exemplo uma variavel, com 0 e 1.
No inicio da página iniciaria sempre com valor 0, e caso alterasse algum valor no input, passaria a valor 1.

E sempre que o valor fosse 1, depois daria para activar o botão e tambem dar para aparecer o aviso de fecho de página.

Isto, desta forma, evito leitura na base de dados e torna-se muito mais simples.

Mas como faço isto num página sem refresh?

Link para o comentário
Compartilhar em outros sites

  • 0

com jquery:

<script>
$('.campos').change( function() {   // se tiver mudança nos campos:
   $('#botao').show();  // mostre o botao
});
$('#botao').click( function() {  // ao clicar no botao submit:
  $('#botao').hide();  //esconde o botao novamente

  //
  // para não recarregar a página, teria de fazer uma requisição ajax aqui. Use o ajax();
  // 

});
</script>

<form id='form1' action='index.php' method='post'>
    Input1: <input type='text' name='A' id='A' class="campos" value='0' maxlength='2'><br>
    Input2: <input type='text' name='B' id='B' class="campos" value='0' maxlength='2'><br>
    Input3: <input type='text' name='C' id='C' class="campos" value='0' maxlength='2'><br>
    Input4: <input type='text' name='D' id='D' class="campos" value='0' maxlength='2'><br>
    Input5: <input type='text' name='E' id='E' class="campos" value='0' maxlength='2'><br><br>
    <button type='submit' class='btn' id="botao" style="display: none;">Enviar dados</button>
</form>
Link para o comentário
Compartilhar em outros sites

  • 0

Tiko bom dia,

Para funcionar o Jquery você tem que carregar a biblioteca do Jquery antes.

<script type='text/javascript' src='//code.jquery.com/jquery-1.11.0.js'></script>

Olá, tudo bem?

Isso não me resolve. Resolveu com o 1.7.2.js

Mas no meu codigo, ao carregar nos links, só me funciona no primeiro <a> e nos seguintes não.

Como coloco a dar?

http://jsfiddle.net/9frc9eo3/5/

Editado por Tiko165
Link para o comentário
Compartilhar em outros sites

  • 0

css:

p { margin: 0px; padding: 0px; }

Script, com jquery

$('.campos').change( function() {   // se tiver mudança nos campos:
   $('#botao').show();  // mostre o botao
});
$('#botao').click( function() {  // ao clicar no botao submit:
  $('#botao').hide();  //esconde o botao novamente

  //
  // para não recarregar a página, teria de fazer uma requisição ajax aqui. Use o ajax();
  // 

});
$('.mais').click( function() {
       a = parseInt($(this).parent().find('input').val());  // pega valor do input que está dentro do <p>
       a = a + 1;    // soma total do campo
       $(this).parent().find('input').val(a);   // atribui o valor no input
       $('.campos').trigger('change');  // ativa evento change
});
$('.menos').click( function() {
       a = parseInt($(this).parent().find('input').val());  // pega valor do input que está dentro do <p>
       a = a - 1;    // subtrai total do campo
       $(this).parent().find('input').val(a);  // atribui o valor no input
       $('.campos').trigger('change');   // ativa evento change
});

html

<form id='form1' action='index.php' method='post'>
    <p>Input1: <input type='text' name='A' id='A' class="campos" value='0' maxlength='2'> <a class="mais" href='#'>+</a> / <a class="menos" href='#'>-</a></p>
    <p>Input2: <input type='text' name='B' id='B' class="campos" value='0' maxlength='2'> <a class="mais" href='#'>+</a> / <a class="menos" href='#'>-</a></p>
    <p>Input3: <input type='text' name='C' id='C' class="campos" value='0' maxlength='2'> <a class="mais" href='#'>+</a> / <a class="menos" href='#'>-</a></p>
    <p>Input4: <input type='text' name='D' id='D' class="campos" value='0' maxlength='2'> <a class="mais" href='#'>+</a> / <a class="menos" href='#'>-</a></p>
    <p>Input5: <input type='text' name='E' id='E' class="campos" value='0' maxlength='2'> <a class="mais" href='#'>+</a> / <a class="menos" href='#'>-</a></p>
    <button type='submit' class='btn' id="botao" style="display: none;">Enviar dados</button>
</form>

funcionando com o + e -, ( embora você não queira com o + e - ... mas eu já tinha feito...)

Para mudar o campo quando clica, teria de usar o evento onKeyPress...

Link para o comentário
Compartilhar em outros sites

  • 0
<form id='form1' action='index.php' method='post'>
    <p>Input1: <input type='text' name='A' id='A' onkeyPress="$('.campos').trigger('change');" class="campos" value='0' maxlength='2'> <a class="mais" href='#'>+</a> / <a class="menos" href='#'>-</a></p>
    <p>Input2: <input type='text' name='B' id='B' onkeyPress="$('.campos').trigger('change');" class="campos" value='0' maxlength='2'> <a class="mais" href='#'>+</a> / <a class="menos" href='#'>-</a></p>
    <p>Input3: <input type='text' name='C' id='C' onkeyPress="$('.campos').trigger('change');" class="campos" value='0' maxlength='2'> <a class="mais" href='#'>+</a> / <a class="menos" href='#'>-</a></p>
    <p>Input4: <input type='text' name='D' id='D' onkeyPress="$('.campos').trigger('change');" class="campos" value='0' maxlength='2'> <a class="mais" href='#'>+</a> / <a class="menos" href='#'>-</a></p>
    <p>Input5: <input type='text' name='E' id='E' onkeyPress="$('.campos').trigger('change');" class="campos" value='0' maxlength='2'> <a class="mais" href='#'>+</a> / <a class="menos" href='#'>-</a></p>
    <button type='submit' class='btn' id="botao" style="display: none;">Enviar dados</button>
</form>

Pequena alteração para colocar o onkeypress

Link para o comentário
Compartilhar em outros sites

  • 0

devo entender que ao dizer 'carregar' você deva estar se referindo a 'salvar no BD' ?

Não amigo. Acho que não me estou fazer entender.

Carregar igual a Clicar :P

Vamos la tentar explicar de novo:

- Eu tenho 5 inputs;

- E tenho 5 links (<a>blabla</a>);

Neste momento sempre que clico e altero algum valor, o botão fica activo.

E tambem quero que ao clicar em algum link, o botão se active da mesma forma.

Editado por Tiko165
Link para o comentário
Compartilhar em outros sites

  • 0

Tiko, mas já não está feito??? O código que eu fiz está bem completo.

Ao mudar o valor dos campos dos inputs, o botão submit fica ativo. E melhor: fica ativo assim que o usuário 'tecla' uma tecla qualquer dentro do input (com evento onkeypress)

Link para o comentário
Compartilhar em outros sites

  • 0

Eu estou a utilizar Inputs Spinner e à um problem.

Input spinner é isto: http://jsfiddle.net/dancam/MCx2j/

Sandro2011, o seu código funciona correctamente, mas como utilizo no input o UP e um DOWN (os tais +1 e -1), no ficheiro Javascript que vem, no clique do <a>, a class já tem isto tudo, "ui-spinner-button ui-spinner-up ui-corner-tr", como posso adequar à sua class (mais/menos) que você mostrou?

S6zfJm.png

Editado por Tiko165
Link para o comentário
Compartilhar em outros sites

  • 0
$('.campos').change( function() {   // se tiver mudança nos campos:
	document.getElementById('botao').disabled = false;
	
	window.onbeforeunload = function(e) {
		return 'Deseja mesmo sair?';
	};
});

Sempre que activar o Botão, vou depois querer colocar uma mensagem de aviso caso a pessoa queira sair da página.

Mas como faço isso, para não executar quando carrego no botão do form?

Editado por Tiko165
Link para o comentário
Compartilhar em outros sites

  • 0

Tiko, se for ativar um 'confirm' após o clique do submit, tem de criar um novo evento com Jquery:

$('#botao').click(function(){
   if confirm('Deseja sair?') { // codigo para sair
      }
    else { // codigo se for ficar , ou omita, se não quiser fazer nada 
      }
});
Link para o comentário
Compartilhar em outros sites

  • 0

Tiko, se for ativar um 'confirm' após o clique do submit, tem de criar um novo evento com Jquery:

$('#botao').click(function(){
   if confirm('Deseja sair?') { // codigo para sair
      }
    else { // codigo se for ficar , ou omita, se não quiser fazer nada 
      }
});

Isso dessa forma não me funciona, pois deixa todo o script de funcionar :/

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...