JS无法正常进行表单验证

时间:2015-09-07 22:48:42

标签: javascript html

HTML

<form name="suggestion" method="post" action="suggestion.php"              
    class="elegant-aero" onSubmit="return validate()" >                 
    <label>
    <span>Message :</span>
    <textarea id="Message" name="message" placeholder="Your Message to Us"></textarea>
    </label>
    <input type="submit" class="buttonc" value="SEND" onclick="validate()">
</form>

的JavaScript

function validate() {
    var message = document.suggestion.message.value;
    if (message == "") {
        alert("Message box should not be leaved empty");
        return false;
    } else {
        return true;
    }
}

我做错了吗?我的验证功能不起作用。请给我一些建议。

3 个答案:

答案 0 :(得分:0)

我认为主要的错误在于document.suggestion.message.value不是我理解的有效选择器。尝试getElementById以选择该表单。

答案 1 :(得分:0)

要按名称访问表单,您必须执行以下操作:

var message = document.forms["suggestion"].elements["message"].value;

但更好的方法是使用 ID

<强> BUT

最简单的方法,就是在<textarea>

中设置所需的属性
<textarea required>

答案 2 :(得分:0)

代码很好,但您必须正确地将脚本放在文档

看这里 http://jsfiddle.net/wLrg26s0/4/ 在jsbin的左侧选择no wrap - in <body>,它的意思是代码看起来像

<body>
   <!-- page -->
   <script>
      //js here
   </script>
<body>

函数声明以这种方式转到window名称空间。它的全局名称空间,onSubmit搜索validate函数。

如果您在jsbin onLoad的左侧选择,那么代码看起来像(并且不要忘记点击运行)

   <script>
      $( document ).ready(function() {
        //js here
      });
   </script>

脚本不起作用,因为函数在其他地方声明。 要解决此问题,您必须以这种方式声明函数

window.validate = function(){ /*code */}