我有一个包含某些字段的表单。我还在学习Javascript。当我被提交时,它触发我的JS,它检查字段是否已提交,然后显示错误,通过innerhtml完成。问题是它只显示div几秒钟然后完成重新加载页面并且div不再显示。
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 :(得分:1)
您需要添加
e.preventDefault();
用于避免默认行为。
因此,如果验证失败,则form
将无法提交。
答案 1 :(得分:1)
请检查您是否使用普通的HTML输入元素或ASP.NET服务器元素。如果您使用像当时页面那样的服务器元素将在单击按钮时发送回服务器(重新加载)。你上面给出的细节是不够的。
答案 2 :(得分: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;
}
}