2011-11-22 141 views
2

之前,我可以提交一个表单,并在JavaScript为使用简单的匿名功能进行验证,验证表单提交

document.getElementById('myForm').onsubmit = function() { 
    if(document.getElementById('email').value == "") { 
     document.getElementById('errormessage').innerHTML = "Please provide at least an email address"; 
     return false; 
    } else { 
     return true; // Note this 
    } 
}; 

在上面的例子中使用匿名功能,我可以简单地分配的返回值时该文件是提交并阻止提交页面,而在下面的示例中,我使用addEventListener在提交表单时添加事件,并通过验证功能对其进行进一步评估。我还将返回值设置为true或false,但这种方法似乎不起作用并且页面已提交。我认为我在返回值时出错

function addEventHandler(node, evt, func) { 
    if(node.addEventListener) 
     node.addEventListener(evt, func); 
    else 
     node.attachEvent("on" + evt, func); 
} 
function initializeAll() { 
    addEventHandler(document.getElementById('myform'), 'submit', validate); 
} 
function validate() { 
    if(document.getElementById('email').value == ""){ 
     document.getElementById("errormessage").innerHTML = "Please provide at least an email "; 
     return false; 
    } else { 
     return true; 
    } 
} 
addEventHandler(window, 'load', initializeAll); 

我该如何返回值以防止表单提交或提交表单?

+0

你可能要考虑使用预先内置的JavaScript表单验证库。在JavaScript中进行手动验证是史诗比例的PITA。 – GordonM

+0

我很抱歉,但我认为jquery也是JavaScript库,所以人们使用jQuery可以给这个答案。 – Sandeep

回答

4

您发布的jQuery下这个问题,所以我会扔出来遐一个jQuery解决方案:

$('#myform').on('submit', function() { 
    if($('#email').val() == ""){ 
     $('#errormessage').html("Please provide at least an email "); 
     return false; 
    } else { 
     return true; 
    } 
}); 

请注意,我用了jQuery 1.7 .on()功能,在这种情况下取​​代了早期版本的.bind()功能。

--Update--

这里是上述解决方案的的jsfiddle:http://jsfiddle.net/jasper/LmaYk/

1

使用事端这样

<form ...... onsubmit="return your validationFunctionThatReturnTruOrFalse() " >