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

无法使用Javascript验证表单;PHP重定向问题?,php,javascript,html,wamp,Php,Javascript,Html,Wamp,我为一个朋友的爱好编写了一个简单的表单;基本上,我们正在尝试猜测2010年世界杯上几支球队的首发阵容(只是为了踢球) 无论如何,我需要验证以下表单。所有Javascript函数似乎都运行良好,因为如果我只在标记的外部调用它们,一切都正常。现在,我想执行一些基本的客户端验证(我知道,blabla不安全,但这是一种爱好,因此不相关),然后将表单传递到另一个页面,PHP(目前使用的是WAMP Server 2.0)脚本将收集数据并将其存储在数据库中 以下是表格: <form name ="for

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

无论如何,我需要验证以下表单。所有Javascript函数似乎都运行良好,因为如果我只在标记的外部调用它们,一切都正常。现在,我想执行一些基本的客户端验证(我知道,blabla不安全,但这是一种爱好,因此不相关),然后将表单传递到另一个页面,PHP(目前使用的是WAMP Server 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函数,但是:

  • 我没有从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;
}
函数Valida(textstring)
{
var error_msg=null;
如果(!valida_11(textstring.toUpperCase()))
{
错误消息='Erro para a equipa'+textstring.toUpperCase()+':deve selecionar apenas 11 jogadors efectivos';
警报(错误消息);
}
如果(!valida_gk(textstring.toUpperCase()))
{
error_msg='Erro para a equipa'+textstring.toUpperCase()+':deve selecionar um e um só1 guarda redes efectivo';
警报(错误消息);
}
如果(!valida_def(textstring.toUpperCase()))
{
error_msg='Erro para a equipa'+textstring.toUpperCase()+':deve selecionar um mínino de 3 defesas effectivo';
警报(错误消息);
}
如果(错误消息==null)
返回true;
否则返回false;
}
功能valida_11(待定)
{
var-ef=0;
var input_list=document.getElementsByName('escolha'+tbl);
对于(变量i=0;i=3)
返回true;
否则返回false;
}
功能控制定义(待定)
{
var-defs=0;
var tabela=document.getElementById('tabela_u2;'+tbl);
对于(var i=1;i
编辑2:在其他浏览器中也会发生同样的情况,比如IE7。 编辑3:重新启动电脑,但问题仍然存在…:/

好的,我设法把网页放到网上了@:
让它转一转。在这里,我得到了一个404错误;没有调用JS函数……

因为表单正在刷新页面,即使没有操作=”。 尝试改为编写
onsubmit=“return ValidaTudo();”
this:
action=“javascript:ValidaTudo();”

)))

嗯,这太尴尬了。。。 我的错。我搞砸了,因为我正在使用一个糟糕的菜单栏,它是由另一个忘记关闭标签的程序员制作的;所有的东西都在正常工作,因为我们看到的实际形状实际上是在另一个里面/掌心


我向大家致歉,谢谢你们的时间和耐心。

请继续往下看;我没有粘贴它,因为我甚至没有从ValidaTudo函数获得警报。另外,当位于表单标记之外时,整个Javascript函数集都可以正常工作。不过我可以粘贴它,这没有问题。
if(Valida('PT'))
函数定义在哪里?带有
onsubmit
属性的
是否在Firebug或其他DOM检查器中正确显示?你有示例页面吗?是的,Firebug完全没有显示任何内容。我在网站其他部分的开发过程中,以及在测试其他功能时,也在这个表单的开发过程中大量使用了它。你的意思是“它没有显示错误”或“表单/属性没有显示”?以及“在哪里”;“在
警报('debug:validating…')
之后你错过了它吗?打得好;是的,测试页面上没有。
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;
}