2013-11-27 45 views
0

所以,我有这样的代码验证表单取决于其提交按钮用于

<script> 
    function validate(f) { 
     var ok = true; 
     if (f.id.value === '' || f.id.value === null) { 
      ok = false; 
     } 
     return ok; 
    } 

    function validate2(f) { 
     var ok = true; 
     if (f.name.value === '' || f.name.value === null) { 
      ok = false; 
     } 
     return ok; 
    } 
</script> 

<form action="#" method="post"> 
    <input type="text" name="id"/> 
    <input type="text" name="name"/> 
    <input type="submit" name="send_id" value="Send ID"/> 
    <input type="submit" name="send_name" value="Send Name"/> 
</form> 

我怎么能这样做是为了验证表单取决于其提交使用? 我想执行validate();如果我们使用另一个发送Id按钮,并且validate2()。

+0

什么是参数f在你验证函数? – sabotero

+0

为什么你不能制造两种不同的形式? –

+0

参数f是表单本身,我不能制作两个不同的表单,因为我不能嵌套它们。 – gbestard

回答

0

你可以这样做:

<form id="myForm" action="#" method="post"> 
    <input type="text" name="id"/> 
    <input type="text" name="name"/> 
    <input type="submit" name="send_id" value="Send ID" onclick="return validate();" /> 
    <input type="submit" name="send_name" value="Send Name" onclick="return validate2();" /> 
</form> 

这样,当你的函数返回false(意思形式无效)提交被中断。

并手动获取您的f参数。

function getForm() { 
    return document.getElementById("myForm"); 
} 
function validate() { 
    var f = getForm(); 
    var ok = true; 
    if (f.id.value === '' || f.id.value === null) { 
     ok = false; 
    } 
    return ok; 
} 

function validate2() { 
    var f = getForm(); 
    var ok = true; 
    if (f.name.value === '' || f.name.value === null) { 
     ok = false; 
    } 
    return ok; 
} 

您必须为您的表单提供一个id,如上所示。

+0

谢谢你,比我想象的要容易 – gbestard

0

有另一个功能checkValidate()什么的,只要你喜欢,并检查它的两个buttons

<script> 
    function checkValidate(buttonName) { 
     if(buttonName == 'send_id'){ 
      return validate(); 
     }else{ 
      return validate2(); 
     } 
    } 

    function validate() { 
     var ok = true; 
     if (f.id.value === '' || f.id.value === null) { 
      ok = false; 
     } 
     return ok; 
    } 

    function validate2() { 
     var ok = true; 
     if (f.name.value === '' || f.name.value === null) { 
      ok = false; 
     } 
     return ok; 
    } 
</script> 

<form action="#" method="post"> 
    <input type="text" name="id"/> 
    <input type="text" name="name"/> 
    <input type="submit" name="send_id" value="Send ID" onclick="return checkValidate(this.name)"/> 
    <input type="submit" name="send_name" value="Send Name" onclick="return checkValidate(this.name)"/> 
</form> 

我希望它能帮助点击...

+0

谢谢你就是我一直在寻找的 – gbestard

+0

你测试了吗?我可以猜测,如果你不返回'checkValidate'返回的值,即使表单无效,提交也会发生。在下面检查我的答案。 – sabotero

+0

'onclick =“return checkValidate(this.name)”'而不是'onclick =“checkValidate(this.name)”' – sabotero

-2

没有测试..但类似的东西。 ..

$("input[name='send_id']").click(function(event) { 
    event.preventDefault() 
    validate(); 
    $("form").submit(); 
}); 
$("input[name='send_name']").click(function(event) { 
    event.preventDefault() 
    validate2(); 
    $("form").submit(); 
}); 
+0

OP不使用jQuery – sabotero

相关问题