Não consigo validar meu formulário
Olá pessoal. Estou tentando validar meu formulário com javascript, uma validação bem básica somente para ver se os campos estão preenchidos, sei que é bestinha, mas javascript não é meu forte ^^
Bem, tenho cinco campos de texto que não podem passar vazios, e dois campos de check box, onde pelo menos um deles deve estar selecionado.
Então fiz o seguinte script:
function checa_formulario(form){
if (form.cod.checked == ""){
bootbox.alert("<span class='text-danger'><b class='glyphicon glyphicon-remove'></b> Informe um código para este serviço.</span>", function(){});
form.cod.focus();
return (false);
}
if (form.titulo.value == ""){
bootbox.alert("<span class='text-danger'><b class='glyphicon glyphicon-remove'></b> Informe um título para este serviço.</span>", function(){});
form.titulo.focus();
return (false);
}
if (form.valorCusto.value == ""){
bootbox.alert("<span class='text-danger'><b class='glyphicon glyphicon-remove'></b> Informe o valor de custo deste serviço.</span>", function(){});
form.valorCusto.focus();
return (false);
}
if (form.valorFinal.value == ""){
bootbox.alert("<span class='text-danger'><b class='glyphicon glyphicon-remove'></b> Informe o valor final deste serviço.</span>", function(){});
form.valorFinal.focus();
return (false);
}
if (form.categoria.value == ""){
bootbox.alert("<span class='text-danger'><b class='glyphicon glyphicon-remove'></b> Informe a qual categoria pertence este serviço.</span>", function(){});
form.categoria.focus();
return (false);
}
if (document.demoform2.franquia.checked == false && document.demoform2.clientefinal.checked == false) {
bootbox.alert("<span class='text-danger'><b class='glyphicon glyphicon-remove'></b> Selecione pelo menos um destinado a usar o serviço. (Franqueado/Cliente Final)</span>", function(){});
form.franquia.focus();
form.clientefinal.focus();
return (false);
}
return (true);
}
E o formulário no HTML esta assim:
<form id="demoform2" data-parsley-validate class="form-horizontal form-label-left" action="?a=<?php echo($_GET['n'] != '')?'atualiza':'novo';?>" method="post" onsubmit="return checa_formulario(this)" enctype="multipart/form-data">
<?php if($_GET['n'] != ''){ ?>
<input type="hidden" name="clicod" value="<?php echo $_GET['n'];?>">
<?php } ?>
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12">Código <span class="required">*</span>
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<input type="text" class="form-control col-md-7 col-xs-12" name="cod" value="<?php echo $vcod; ?>"><br>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12">Serviço <span class="required">*</span>
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<input type="text" class="form-control col-md-7 col-xs-12" name="titulo" value="<?php echo $vtitulo; ?>"><br>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12">Valor de custo <small>(R$)</small><span class="required">*</span>
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<input type="text" class="form-control col-md-7 col-xs-12 decimal" name="valorCusto" value="<?php echo $vcusto; ?>"><br>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12">Valor final <small>(R$)</small><span class="required">*</span>
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<input type="text" class="form-control col-md-7 col-xs-12 decimal" name="valorFinal" value="<?php echo $vfinal; ?>"><br>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12">Categoria <span class="required">*</span>
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<select class="form-control col-md-7 col-xs-12 select2_single" tabindex="-1" name="categoria">
<option></option>
<?php
$resultadocli = mysql_query("SELECT id, nome_categoria FROM categorias ORDER BY nome_categoria ASC");
$totalcli = mysql_num_rows($resultadocli);
while($row = mysql_fetch_array($resultadocli)) {
?>
<option value="<?php echo $row['id'];?>" <?php if($row['id'] == $vcategoria){ echo ' selected="selected"'; } ?> ><?php echo $row['nome_categoria'];?></option>
<?php } ?>
</select>
</div>
</div>
<div class="container">
<div class="row">
<div class="form-group">
<div class="searchable-container">
<div class="items col-xs-12 col-sm-6 col-md-5 col-lg-4 col-xs-offset-1 col-sm-offset-3 col-md-offset-1 col-lg-offset-2">
<div class="info-block block-info clearfix">
<div class="square-box pull-left">
<span class="glyphicon glyphicon-tags glyphicon-lg"></span>
</div>
<div data-toggle="buttons" class="btn-group bizmoduleselect">
<label class="btn btn-default <?php echo ($vfranquia == 'franquia')?'active':'';?>">
<div class="bizcontent">
<input type="checkbox" name="franquia" value="franquia" <?php echo ($vfranquia == 'franquia')?'checked':'';?>>
<span class="glyphicon glyphicon-ok glyphicon-lg"></span>
<h5>Serviço para franqueados</h5>
</div>
</label>
</div>
</div>
</div>
<div class="items col-xs-12 col-sm-6 col-md-5 col-lg-4 col-xs-offset-1 col-sm-offset-3 col-md-offset-1">
<div class="info-block block-info clearfix">
<div class="square-box pull-left">
<span class="glyphicon glyphicon-tags glyphicon-lg"></span>
</div>
<div data-toggle="buttons" class="btn-group bizmoduleselect">
<label class="btn btn-default <?php echo ($vcliente == 'clientefinal')?'active':'';?>">
<div class="bizcontent">
<input type="checkbox" name="clientefinal" value="clientefinal" <?php echo ($vcliente == 'clientefinal')?'checked':'';?>>
<span class="glyphicon glyphicon-ok glyphicon-lg"></span>
<h5>Serviço para clientes finais</h5>
</div>
</label>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="ln_solid"></div>
<div class="form-group">
<div class="col-md-6 col-sm-6 col-xs-12 col-md-offset-3">
<button type="reset" class="btn btn-default">Limpar</button>
<button type="submit" class="btn btn-success">Concluir</button>
</div>
</div>
</form><form id="demoform2" data-parsley-validate class="form-horizontal form-label-left" action="?a=<?php echo($_GET['n'] != '')?'atualiza':'novo';?>" method="post" onsubmit="return checa_formulario(this)" enctype="multipart/form-data">
<?php if($_GET['n'] != ''){ ?>
<input type="hidden" name="clicod" value="<?php echo $_GET['n'];?>">
<?php } ?>
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12">Código <span class="required">*</span>
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<input type="text" class="form-control col-md-7 col-xs-12" name="cod" value="<?php echo $vcod; ?>"><br>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12">Serviço <span class="required">*</span>
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<input type="text" class="form-control col-md-7 col-xs-12" name="titulo" value="<?php echo $vtitulo; ?>"><br>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12">Valor de custo <small>(R$)</small><span class="required">*</span>
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<input type="text" class="form-control col-md-7 col-xs-12 decimal" name="valorCusto" value="<?php echo $vcusto; ?>"><br>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12">Valor final <small>(R$)</small><span class="required">*</span>
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<input type="text" class="form-control col-md-7 col-xs-12 decimal" name="valorFinal" value="<?php echo $vfinal; ?>"><br>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12">Categoria <span class="required">*</span>
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<select class="form-control col-md-7 col-xs-12 select2_single" tabindex="-1" name="categoria">
<option></option>
<?php
$resultadocli = mysql_query("SELECT id, nome_categoria FROM categorias ORDER BY nome_categoria ASC");
$totalcli = mysql_num_rows($resultadocli);
while($row = mysql_fetch_array($resultadocli)) {
?>
<option value="<?php echo $row['id'];?>" <?php if($row['id'] == $vcategoria){ echo ' selected="selected"'; } ?> ><?php echo $row['nome_categoria'];?></option>
<?php } ?>
</select>
</div>
</div>
<div class="container">
<div class="row">
<div class="form-group">
<div class="searchable-container">
<div class="items col-xs-12 col-sm-6 col-md-5 col-lg-4 col-xs-offset-1 col-sm-offset-3 col-md-offset-1 col-lg-offset-2">
<div class="info-block block-info clearfix">
<div class="square-box pull-left">
<span class="glyphicon glyphicon-tags glyphicon-lg"></span>
</div>
<div data-toggle="buttons" class="btn-group bizmoduleselect">
<label class="btn btn-default <?php echo ($vfranquia == 'franquia')?'active':'';?>">
<div class="bizcontent">
<input type="checkbox" name="franquia" value="franquia" <?php echo ($vfranquia == 'franquia')?'checked':'';?>>
<span class="glyphicon glyphicon-ok glyphicon-lg"></span>
<h5>Serviço para franqueados</h5>
</div>
</label>
</div>
</div>
</div>
<div class="items col-xs-12 col-sm-6 col-md-5 col-lg-4 col-xs-offset-1 col-sm-offset-3 col-md-offset-1">
<div class="info-block block-info clearfix">
<div class="square-box pull-left">
<span class="glyphicon glyphicon-tags glyphicon-lg"></span>
</div>
<div data-toggle="buttons" class="btn-group bizmoduleselect">
<label class="btn btn-default <?php echo ($vcliente == 'clientefinal')?'active':'';?>">
<div class="bizcontent">
<input type="checkbox" name="clientefinal" value="clientefinal" <?php echo ($vcliente == 'clientefinal')?'checked':'';?>>
<span class="glyphicon glyphicon-ok glyphicon-lg"></span>
<h5>Serviço para clientes finais</h5>
</div>
</label>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="ln_solid"></div>
<div class="form-group">
<div class="col-md-6 col-sm-6 col-xs-12 col-md-offset-3">
<button type="reset" class="btn btn-default">Limpar</button>
<button type="submit" class="btn btn-success">Concluir</button>
</div>
</div>
</form>
Do jeito que está, ele sempre acusa o campo cod como vazio e pede para preencher, mesmo estando preenchido.
Se alguém puder ajudar e dizer onde estou errando fico muito grato!
### EDIÇÃO ###
O problema de acusar o campo cod vazio era porque estava assim if (form.cod.checked == "")
E o correto é if (form.cod.value == "")
cod.checked estava errado ja que o campo é do tipo texto e não checkbox
Mas ainda não consegui fazer com que o javascript valide os dois checkbox no final do formulário, quando preencho sem selecionar nenhum checkbox ele aceita :/Discussão (1)
Carregando comentários...