0

我想验证我的表单,但前提是当时正在显示其周围的 div。这是我到目前为止所拥有的:

function validateForm()
 {
 var x=document.forms["config"]["itemname5"].value;
if (document.getElementById("customtext").style.display=="block" || x==null)
   {
   alert("Text box must be filled in");
   return false;
   }
 }

HTML 片段:

<div class="hide" id="customtext">Enter the text you require on the module. eg. "DAVE" max 6 letters<br />
<input type=text name="itemname5"  class="nicebox" value='' maxlength="6" style="font-size:14; font-weight:bold; width:210px; vertical-align:top; height:20px;">
</div>

我想要它,以便如果显示 div,它会告诉用户他们是否没有输入任何文本并且不会发布表单。

这是页面:http ://www.censdigital.com/2012/earplugs-config.html

提前致谢!

4

2 回答 2

0

当 customText div 的父级被隐藏时,您的逻辑可能会失败。如果你需要处理这样的情况,通过jquery会很简单。

您可以通过简单检查元素是否可见

$(x).is(":visible") /*returns true or false*/

编辑:

要使用 jQUery,请将其添加到页面的 head 部分,您也可以下载此 js 文件并将其托管在本地。

添加后,您可以通过以下方式检查您的元素 x 是否可见

if($(x).is(":visible"))
{
  //your element is visible
}

我建议阅读更多关于 jQuery 的内容,这是一个非常强大的库。并且会帮到你很多。www.jquery.com

于 2013-03-27T14:22:51.727 回答
0

您的 if 语句仅说明元素display属性设置"block"为时元素可见的许多其他状态。我会测试它是否没有隐藏,就像这样

if (document.getElementById("customtext").style.display != "none" && x==""){
   alert("Text box must be filled in"); 
   return false;
}

现在,如果该display属性未设置或未设置为,"block"您仍然会得到预期的结果。

您仍然提交表单的问题可能与您运行函数的方式有关。你能告诉我从哪里调用函数吗?看起来您的return false语句只是退出了您的功能,而不是阻止表单提交。

于 2013-03-27T14:37:44.707 回答