2014-10-08 113 views
0

我有一个表单上的一些领域。我仍然在学习Javascript。当我提交时,它会触发我的JS,它会检查字段是否已提交,然后通过innerhtml显示错误。问题是它只显示div的几秒钟,然后完成重新加载页面和div不再显示。javascript窗体验证 - 重新加载页面

function checkradio() { 
chosen = "" 
len = document.cv.Radio1.length 
for (i = 0; (i<2); i++) { 
if (document.cv.Radio1[i].checked) { 
chosen = document.cv.Radio1[i].value 
} 
} 
if (chosen == "") { 
document.getElementById('error-1').innerHTML = "Please choose a type"; 
document.getElementById("Radio1").focus(); 
} 
} 

回答

0

你需要阻止默认行为,如果验证失败

你最有可能做提交某事像验证:

$('form').submit(function(e){ 


    check = checkradio() // let your function return true or false 
    if(!check){ 
     e.preventDefault(); // add this to not submit the form 
    } 

}); 

这样的形式会不会在验证失败时

提交

您调整的验证功能可能如下所示:

function checkradio() { 
chosen = "" 
len = document.cv.Radio1.length 
for (i = 0; (i<2); i++) { 
if (document.cv.Radio1[i].checked) { 
chosen = document.cv.Radio1[i].value 
} 
} 
if (chosen == "") { 
document.getElementById('error-1').innerHTML = "Please choose a type"; 
document.getElementById("Radio1").focus(); 
return false; 
}else { 
return true; 
} 
} 
+1

没有jQuery:http://stackoverflow.com/questions/10575273/cross-browser-preventdefault-without-jquery – Shautieh 2014-10-08 09:38:54

+0

非常感谢你让我朝着正确的方向发展!在挣扎了一下之后,研究了这个工作:

然后javascript: Wilest 2014-10-08 10:28:28

+0

不错,很乐意帮忙 – 2014-10-08 10:30:56

1

您需要添加

e.preventDefault();

避免默认行为。

因此,如果验证失败form将不会被提交。

1

请检查您使用普通的HTML输入元素还是ASP.NET服务器元素。如果您使用服务器元素(如页面)将在点击按钮时发送回服务器(重新加载)。你上面提供的细节是不够的。