我为朋友的爱好编写了一个简单的表格;基本上,我们试图猜测2010 FIFAWorld Cup中几支球队的首发阵容(仅仅是为了踢球)。
无论如何,我需要验证以下表格。所有Javascript函数似乎都运行良好,因为如果我只是将它们称为 标记,那么一切正常。现在,我想执行一些基本的客户端验证(我知道,它不是安全的blabla,但它是一个爱好,所以它不相关)然后将表单传递给另一个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函数,但是:
我缺少什么?先谢谢你们!
PS:是的,表单根本没有将数据发送到任何页面;我知道;它对奇怪的行为没有任何影响,我已经尝试过了。
编辑:这是其余的验证功能。它们用于检查用户是否遵循了某些规则(例如:准确选择11名球员; 1名守门员;至少3名防守者等等)。我传递了几个参数,因为在完整形式中我们试图猜测4支球队(葡萄牙,西班牙,巴西和阿根廷)的球员 - 因此有4种形式,每种形式都有不同的ID(根据国家的标识符 - &gt; {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:重新启动PC,但问题仍然是......:/
好的,我设法将网页放在网上@:http://testing.freeoda.com/teste.html 给它一个旋转。在这里,我收到404错误;没有JS函数被调用....
答案 0 :(得分:0)
即使没有动作=“”,暂停形式也是刷新页面。
请尝试改为onsubmit="return ValidaTudo();"
:action="javascript:ValidaTudo();"
)))
答案 1 :(得分:0)
我向你们道歉,感谢你们的时间和耐心。