我是php新手并尝试使用javascript验证用户表单中的某些字段。 问题有时是有效的,有时候不行,当警报消失时,用户所填写的所有字段都是空白的。
继承我的PHP代码:
<script>
function validar(formulario){
if(formulario.nome.value == ''){
alert("O campo NOME é obrigatório.");
return false;
}
if(formulario.Email.value == ''){
alert("O campo EMAIL é obrigatório.");
return false;
}
if(formulario.Email.value.indexOf(('@' && '.'),0)== -1){
alert("EMAIL invalido.");
return false;
}
if(formulario.usuario.value == ''){
alert("O campo USUÁRIO é obrigatório.");
return false;
}
if(formulario.senha.value == ''){
alert("O campo SENHA é obrigatório.");
return false;
}
if(formulario.uf.value.length > 3 || formulario.uf.length <=1){
alert("O campo UF é inválido.");
return false;
}
if(formulario.crm.value.length < 4){
alert("O número do CRM é inválido.");
return false;
}
if(formulario.cidade.value.value == ''){
alert("O número do CRM é inválido.");
return false;
}
return true;
}
</script>
</head>
<body>
<form id="formulario" method="post" onsubmit="return validar(this);" action="cadastrar.php">
<B>Nome: </B><input type=text name=nome size="50"> <br>
<BR>
<B>E-mail: </B><input type=text name=Email size="50"><br>
<BR>
<B>Nome de Usuário: </B><input type=text name=usuario size="50"><br>
<BR>
<B>Senha: </B><input type=text name=senha size="10"><br>
<BR>
<B>CRM: </B><input type=text name=crm size="5"><br>
<BR>
<B>UF: </B><input type=text name=uf size="2"><br>
<BR>
<B>Cidade: </B><input type=text name=cidade size="20"><br>
<BR>
<B>Especialidade Médica: </B><input type=text name=esp size="30"><br>
<BR>
<input type="submit" name="Submit" value="Enviar" /> <br />
</form>
答案 0 :(得分:1)
尝试清理代码:
<script type="text/javascript">
function validar(formulario) {
var nome = formulario.nome.value;
if (nome == '') {
alert("O campo NOME é obrigatório.");
return false;
}
var email = formulario.Email.value;
if (email == '') {
alert("O campo EMAIL é obrigatório.");
return false;
}
if (email.indexOf('@') < 0 || email.indexOf('.') < 0) {
alert("EMAIL invalido.");
return false;
}
var usuario = formulario.usuario.value;
if (usuario == '') {
alert("O campo USUÁRIO é obrigatório.");
return false;
}
var senha = formulario.senha.value;
if(senha == '') {
alert("O campo SENHA é obrigatório.");
return false;
}
var uf = formulario.uf.value;
if (uf.length > 3 || uf.length <= 1) {
alert("O campo UF é inválido.");
return false;
}
var crm = formulario.crm.value;
if (crm.length < 4) {
alert("O número do CRM é inválido.");
return false;
}
var cidade = formulario.cidade.value;
if (cidade == '') {
alert("O número do CRM é inválido.");
return false;
}
return true;
}
</script>
</head>
<body>
<form id="formulario" method="post" onsubmit="return validar(this);" action="cadastrar.php">
<b>Nome: </b><input type="text" name="nome" size="50" /><br/><br/>
<b>E-mail: </b><input type="text" name="Email" size="50" /><br/><br/>
<b>Nome de Usuário: </b><input type="text" name="usuario" size="50" /><br/><br/>
<b>Senha: </b><input type="text" name="senha" size="10"><br/><br/>
<b>CRM: </b><input type="text" name="crm" size="5"><br/><br/>
<b>UF: </b><input type="text" name="uf" size="2"><br/><br/>
<b>Cidade: </b><input type="text" name="cidade" size="20"/><br/><br/>
<b>Especialidade Médica: </b><input type="text" name="esp" size="30"/><br/><br/>
<input type="submit" name="Submit" value="Enviar" /><br />
</form>
答案 1 :(得分:0)
Sloppy coding
这样可以更好地DEMO
function validar(formulario){
if(formulario.nome.value == ''){
alert("O campo NOME é obrigatório.");
return false;
}
if(formulario.Email.value == ''){
alert("O campo EMAIL é obrigatório.");
return false;
}
if(formulario.Email.value.indexOf(('@' && '.'),0)== -1){
alert("EMAIL invalido.");
return false;
}
if(formulario.usuario.value == ''){
alert("O campo USUÁRIO é obrigatório.");
return false;
}
if(formulario.senha.value == ''){
alert("O campo SENHA é obrigatório.");
return false;
}
if(formulario.crm.value.length < 4){
alert("O número do CRM é inválido.");
return false;
}
if(formulario.uf.value.length > 3 || formulario.uf.length <=1){
alert("O campo UF é inválido.");
return false;
}
if(formulario.cidade.value == ''){
alert("O número do cidade é inválido.");
return false;
}
return true;
}
我还建议添加
function isEmail(str) { // http://stackoverflow.com/a/4964763/295783
return /(.+)@(.+){2,}\.(.+){2,}/.test(str);
}
并且
if(!isEmail(formulario.Email.value)){
alert("EMAIL invalido.");
return false;
}
答案 2 :(得分:0)
重写脚本以便轻松扩展
function validar(formulario){
var checkEmptyString = function(x){
return x === undefined || x === null || x === '';
},
minLen = function(s, i){
return s.length >= i;
},
maxLen = function(s, i){
return s.length <= i;
},
betweenLen = function(s, min, max){
return s.length >= min && s.length <= max;
},
containsChars = function(s, chars){
var i = 0;
for( i=0; i<chars.length; i++ ) if(s.indexOf(chars[i]) === -1) return false;
return true;
},
testEmpty = ['nome', 'Email', 'usuario', 'senha', 'cidade'],
testContain = {'Email': '@.'},
testMin = {},
testMax = {'crm':4},
testBetween = {'uf':[2, 3]},
i = 0;
for( i=0; i<testEmpty.length; i++){
if( checkEmptyString( formulario[ testEmpty[i] ].value ) )
return alert('O campo '+testEmpty[i].toUpperCase()+' é obrigatório.'),
false;
}
for( i in testContain ){
if( false === containsChars( formulario[ i ].value, testContain[i] ) )
return alert(i.toUpperCase()+' invalido.'),
false;
}
for( i in testMin ){
if( false === minLen( formulario[ i ].value, testMin[i] ) )
return alert('O número do '+i.toUpperCase()+' é invalido.'),
false;
}
for( i in testMax ){
if( false === maxLen( formulario[ i ].value, testMax[i] ) )
return alert('O número do '+i.toUpperCase()+' é invalido.'),
false;
}
for( i in testBetween ){
if( false === betweenLen( formulario[ i ].value, testBetween[i][0], testBetween[i][1] ) )
return alert('O campo '+i.toUpperCase()+' é invalido.'),
false;
}
return true;
}
我知道这个回应有点晚了