无法使用Javascript验证表单; PHP 重定向问题?

问题描述 投票:0回答:2

我根据朋友的爱好编写了一个简单的表单;基本上,我们正在尝试猜测 2010 年 FIFA 世界杯上几支球队的首发阵容(只是为了好玩)。

无论如何,我需要验证以下表格。所有 Javascript 函数似乎都运行良好,因为如果我只是将它们称为标签的“outside”,一切都会正常工作。现在,我想执行一些基本的客户端验证(我知道,这不安全,但这是一种爱好,所以它不相关),然后将表单传递到另一个页面,其中包含 PHP(当前使用 WAMP 服务器) 2.0) 脚本将收集数据并将其存储在数据库中。 表格如下:

<form name ="formPT" id="formPT" action="" onsubmit="return ValidaTudo();" method="post"> <a><img src="icons/paises/portugal-flag-icon.png" alt="portugal" border="0" style="vertical-align:middle"> Portugal</a> <table id="tabela_PT" cellspacing="0" summary="Equipa"> <thead> <tr> <th scope="col" abbr="Nome" class="nobg">Nome</th> <th scope="col" abbr="Posicao">Posição</th> <th scope="col" abbr="Escolha">Escolha</th> <th scope="col" abbr="Anterior">Escolha Anterior</th> </tr> </thead> <tbody> <tr><td scope="row" abbr="Jogador" class="spec">Eduardo</td><td>Guarda-redes</td><td><select name="escolhaPT"><option value="EF">EF</option><option value="SP">SP</option><option value="NU" selected="selected">NU</option></select> </td><td>NU</td></tr> <tr><td scope="row" abbr="Jogador" class="spec">Beto</td><td>Guarda-redes</td><td><select name="escolhaPT"><option value="EF">EF</option><option value="SP">SP</option><option value="NU" selected="selected">NU</option></select> </td><td>NU</td></tr> <tr><td scope="row" abbr="Jogador" class="spec">Daniel Fernandes</td><td>Guarda-redes</td><td><select name="escolhaPT"><option value="EF">EF</option><option value="SP">SP</option><option value="NU" selected="selected">NU</option></select> </td><td>NU</td></tr> <tr><td scope="row" abbr="Jogador" class="spec">Paulo Ferreira</td><td>Defesa</td><td><select name="escolhaPT"><option value="EF">EF</option><option value="SP">SP</option><option value="NU" selected="selected">NU</option></select> </td><td>NU</td></tr> <tr><td scope="row" abbr="Jogador" class="spec">Miguel</td><td>Defesa</td><td><select name="escolhaPT"><option value="EF">EF</option><option value="SP">SP</option><option value="NU" selected="selected">NU</option></select> </td><td>NU</td></tr> <tr><td scope="row" abbr="Jogador" class="spec">Ricardo Carvalho</td><td>Defesa</td><td><select name="escolhaPT"><option value="EF">EF</option><option value="SP">SP</option><option value="NU" selected="selected">NU</option></select> </td><td>NU</td></tr> <tr><td scope="row" abbr="Jogador" class="spec">Bruno Alves</td><td>Defesa</td><td><select name="escolhaPT"><option value="EF">EF</option><option value="SP">SP</option><option value="NU" selected="selected">NU</option></select> </td><td>NU</td></tr> <tr><td scope="row" abbr="Jogador" class="spec">Ricardo Costa</td><td>Defesa</td><td><select name="escolhaPT"><option value="EF">EF</option><option value="SP">SP</option><option value="NU" selected="selected">NU</option></select> </td><td>NU</td></tr> <tr><td scope="row" abbr="Jogador" class="spec">Fabio Coentrao</td><td>Defesa</td><td><select name="escolhaPT"><option value="EF">EF</option><option value="SP">SP</option><option value="NU" selected="selected">NU</option></select> </td><td>NU</td></tr> <tr><td scope="row" abbr="Jogador" class="spec">Pepe</td><td>Médio</td><td><select name="escolhaPT"><option value="EF">EF</option><option value="SP">SP</option><option value="NU" selected="selected">NU</option></select> </td><td>NU</td></tr> </tbody> </table> <input type='submit' value='Check Field' /> </form>

现在了解一些 Javascript:

function ValidaTudo() { alert('debug: validating...') if(Valida('PT')) { alert('fine!'); return true; } else { alert('useless validation message but wth'); return false; } }

显然还有更多的 JavaScript 函数,但是:

我没有从该 JavaScript 函数中收到
    任何
  • 警报弹出窗口! 该页面非常简单地重定向到index.php,所以我假设这是一个PHP/WAMP 问题...我重新启动了WAMP 好几次,但到目前为止还没有运气。我还没有重新启动我的电脑,尽管我认为我应该重新启动。
  • 我错过了什么?提前谢谢大家!

PS:是的,表单根本没有将数据发送到任何页面;我知道;它对奇怪的行为没有任何影响,我已经尝试过了。

编辑:这是其余的验证函数。它们用于检查用户是否遵循某些规则(例如:恰好选择 11 名球员;1 名守门员;至少 3 名后卫等...)。我传递了几个参数,因为在完整形式中,我们试图猜测 4 支球队(葡萄牙、西班牙、巴西和阿根廷)的球员 - 因此有 4 种形式,每种形式都有不同的 ID(基于国家的标识符 - > {PT、BR、AR、ES} 这是其余的函数

(请记住它们在表单之外工作)

function Valida (textstring) { var error_msg = null; if(!valida_11(textstring.toUpperCase())) { error_msg = 'Erro para a equipa ' + textstring.toUpperCase() + ': deve selecionar apenas 11 jogadores efectivos'; alert(error_msg); } if (!valida_gk(textstring.toUpperCase())) { error_msg = 'Erro para a equipa ' + textstring.toUpperCase() + ': deve selecionar um e um só 1 guarda-redes efectivo'; alert(error_msg); } if (!valida_def(textstring.toUpperCase())) { error_msg = 'Erro para a equipa ' + textstring.toUpperCase() + ': deve selecionar um mínino de 3 defesas efectivo'; alert(error_msg); } if(error_msg == null) return true; else return false; } function valida_11(tbl) { var ef = 0; var input_list = document.getElementsByName('escolha' + tbl); for(var i = 0; i < input_list.length; i++) { var a = input_list[i].value; if(a == "EF") ef++; } if (ef == 11) return true; else return false; } function valida_gk(tbl) { var ef = 0; var gks = conta_gks(tbl); var input_list = document.getElementsByName('escolha' + tbl); for(var i = 0; i < gks; i++) { var a = input_list[i].value; if(a == "EF") ef++; } if (ef == 1) return true; else return false; } function valida_def(tbl) { var defs = conta_defs(tbl); var gks = conta_gks(tbl); var ef = 0; var input_list = document.getElementsByName('escolha' + tbl); for(var i = gks-1; i < gks + defs; i++) { var a = input_list[i].value; if(a == "EF") ef++; } if (ef >= 3) return true; else return false; } function conta_defs(tbl) { var defs = 0; var tabela = document.getElementById('tabela_' + tbl); for(var i = 1; i < tabela.getElementsByTagName("tr").length; i++) { var linha = tabela.getElementsByTagName("tr")[i]; var celula = linha.getElementsByTagName("td")[1]; if(celula.innerHTML == "Defesa") defs++; } return defs; } function conta_gks(tbl) { var gk = 0; var tabela = document.getElementById('tabela_' + tbl); for(var i = 1; i < tabela.getElementsByTagName("tr").length; i++) { var linha = tabela.getElementsByTagName("tr")[i]; var celula = linha.getElementsByTagName("td")[1]; if(celula.innerHTML == "Guarda-redes") gk++; } return gk; }

编辑 2:在其他浏览器中也会发生同样的情况,例如 IE 7。
编辑 3:重新启动电脑但问题仍然存在...:/

好的,我成功地将页面放到网上@:

http://testing.freeoda.com/teste.html

试一试。在这里,我收到 404 错误;没有调用 JS 函数....

php javascript html wamp
2个回答
0
投票
onsubmit="return ValidaTudo();"

action="javascript:ValidaTudo();"
)))
    


0
投票
<form>

标签;一切都按预期进行,因为我们看到的实际形式实际上在另一个形式中。

    

© www.soinside.com 2019 - 2024. All rights reserved.