mayder
(Bmayder)
March 27, 2011, 8:36pm
1
Pessoal, alguém sabe como faço para desabilitar o Enter no formulário?
Quando monto o form na mão eu faço assim:
<form name="form" action="documento.php" method="POST" onsubmit="return false;">
<input type="text" name="nome" value="">
<input type="button" value="envio" onclick="document.form.submit();">
</form>
Estou tentando fazer no Yii o seguinte:
<?php $form=$this->beginWidget('CActiveForm', array(
...
// Para <form name="form" action="documento.php" method="POST" onsubmit="return false;">
'clientOptions' => array('validateOnSubmit' => true),
...
)); ?>
<?php
// Para <input type="button" value="envio" onclick="document.form.submit();"> Só que este pedaço não sei como fazer:
echo CHtml::submitButton($model->isNewRecord ? 'Inserir ficha' : 'Salvar ficha',array('class'=>'submit'));
?>
Alguem sabe se tem uma forma mais fácil de desabilitar o Enter e que funcione?
Newerton
(Newerton Araujo)
March 28, 2011, 11:33pm
2
Tu quer que obrigatoriamente o usuário clica no botão?
Qual a finalidade?
Se for para validação do formulário usa mais ou menos assim:
$form = $this->beginWidget('CActiveForm', array(
'enableAjaxValidation' => true,
'clientOptions' => array('validateOnSubmit' => true, 'validateOnChange' => true),
));
mayder
(Bmayder)
March 28, 2011, 11:58pm
3
Não é bem exatamente para validar o formulário, é o seguinte, alguns itens do formulário não são obrigatórios, e depois de preencher os obrigatórios os usuários estão apertando Enter sem querer e sem ter preenchido o restante do formulário, se eu forçar o submit só pelo botão ai não terei mais este problema.
Vou testar o que vc falou. Valeu!
Newerton:
Tu quer que obrigatoriamente o usuário clica no botão?
Qual a finalidade?
Se for para validação do formulário usa mais ou menos assim:
$form = $this->beginWidget('CActiveForm', array(
'enableAjaxValidation' => true,
'clientOptions' => array('validateOnSubmit' => true, 'validateOnChange' => true),
));
mayder
(Bmayder)
March 29, 2011, 12:03am
4
Testei com o que o Newerton passou mas infelizmente não tive sucesso, após preencher os campos obrigatórios o formulário ainda aceita o Enter para dar submit.
Newerton
(Newerton Araujo)
March 29, 2011, 2:09pm
5
Mais ai que está, se os outros campos não são obrigatorio, não será nescessário o preenchimento!
Este é o conceito!
Se deseja que outros campos seja preenchido, coloca obrigatoriedade neles!
Por que simplesmente o usuário pode preencher o campos obrigatório, e clicar no botão, terá o mesmo feito, de preencher os campos obrigatório e apertar ENTER.
Vê ae!
panurge
(Thiago)
March 30, 2011, 3:25am
6
Concordo com Newerton, talvez não seja o caminho…
Mas se de fato achar que vai melhorar a usabilidade, o código no cliente (jQuery) é algo assim:
$("#form ").keypress(function(e) {
if (e.which == 13) {
return false;
}
});
Newerton
(Newerton Araujo)
March 30, 2011, 11:30am
7
O meu tb é igual!
$('input, select').keydown(function(e){
if (e.keyCode == 13) {
$('button[id=filtrar]').trigger('click');
return false;
}
});
Não sei por que, deve ser regra do navegador, quando o foco está emcima do <select> o ENTER não submete o formulário ai tive que fazer isso ae.
Mais no seu caso, tu remove o trigger.
Pq vc não faz exatamente como vc fazia antes?
<input type="button" value="envio" onclick="document.form.submit();">
Vai dar menos código do que usar a função submitButton e ficar fazendo um monte de coisas em js pra evitar que o form seja enviado.