在按钮上显示div单击javascript
我有一个默认不可见的div。我想,当按钮点击时,它就会出现。在按钮上显示div单击javascript,javascript,Javascript,我有一个默认不可见的div。我想,当按钮点击时,它就会出现。 我试过了,但问题是它只显示几秒钟,然后又隐藏起来 这是我的密码: function validate() { var ta = document.getElementById("t").value; var oa = document.getElementById("oa").value; var ob = document.getElementById("ob").value; var oc = do
我试过了,但问题是它只显示几秒钟,然后又隐藏起来 这是我的密码:
function validate() {
var ta = document.getElementById("t").value;
var oa = document.getElementById("oa").value;
var ob = document.getElementById("ob").value;
var oc = document.getElementById("oc").value;
var od = document.getElementById("od").value;
if (ta == "") {
alert("Title can't be null");
document.getElementById("t").style.borderColor = "#E34234";
return false;
}
if (oa == "" && ob == "") {
alert("Atleast two options are compulsory");
document.getElementById("oa").style.borderColor = "#E34234";
document.getElementById("ob").style.borderColor = "#E34234";
return false;
}
document.getElementById("g").style.visibility="visible";
return true;
}
Div id是
'g'
,在提交按钮时调用函数validate()
,它验证表单并显示Div。只返回false而不是true。它将停止页面刷新,并且div不会被隐藏。另外,如果需要页面刷新,只需将GET参数与url一起传递,在加载页面时,检查GET参数,如果已设置,则默认情况下使div可见
function validate() {
var ta = document.getElementById("t").value;
var oa = document.getElementById("oa").value;
var ob = document.getElementById("ob").value;
var oc = document.getElementById("oc").value;
var od = document.getElementById("od").value;
if (ta == "") {
alert("Title can't be null");
document.getElementById("t").style.borderColor = "#E34234";
document.getElementById("g").style.visibility="visible";
return false;
}
if (oa == "" && ob == "") {
alert("Atleast two options are compulsory");
document.getElementById("oa").style.borderColor = "#E34234";
document.getElementById("ob").style.borderColor = "#E34234";
document.getElementById("g").style.visibility="visible";
return false;
}
return true;
}
这样,只有验证失败时才会显示div。如果您想提交表单并保持div可见,则需要使用带有get参数的方法,或者需要使用ajax。我在这里猜测一下,并假设表单正在提交,因此您会看到div在几秒钟内可见。您应该使用以下代码:
function validate() {
var ta = document.getElementById("t").value;
var oa = document.getElementById("oa").value;
var ob = document.getElementById("ob").value;
var oc = document.getElementById("oc").value;
var od = document.getElementById("od").value;
var flag = false; // initially assume that all is well
if (ta == "") {
alert("Title can't be null");
document.getElementById("t").style.borderColor = "#E34234";
flag = true; // something wrong, flag it
}
if (oa == "" && ob == "") {
alert("Atleast two options are compulsory");
document.getElementById("oa").style.borderColor = "#E34234";
document.getElementById("ob").style.borderColor = "#E34234";
flag = true; // something wrong, flag it
}
if(flag) // if something wrong, show div and disable form submit
{
document.getElementById("g").style.visibility="visible";
return false;
}
return true;
}
我们在这里所做的是创建一个标志来检查其最后的值。如果为true
,则表示表单上存在错误,因此应禁用表单提交。如果没有,则不会出现错误,表单提交可以照常进行。如果运行此validate()
函数,则应显示id为g
的div。这里没有代码可以隐藏它。或者是否发生了页面刷新?代码中没有隐藏HTML元素的内容。你能提供一个JFIDLE来重现你的问题并进行进一步的调试吗?我猜您的问题中缺少了一些重要的部分。单击“提交按钮”提交表单,页面将被刷新。如果不查看HTML的结构以及如何调用validate
,所有回答的尝试充其量只是猜测。返回false将使表单无效。返回false应该是有条件的,但它阻止表单提交。是的,它应该这样做。如果您希望提交表单,则需要将其包装在条件中。编辑我的答案,1分钟document.getElementById(“g”).style.visibility=“visible”代码>这是因为每个验证失败的条件都需要存在。或者你可以把它放在函数的开头,或者你可以使用另一个答案中建议的标志。标志是一个很好的选择,但代码重复和变量开销是缺点。把它放在一开始不是一个好的做法。它必须是有条件的,应该是这样的。