textarea验证中的最小长度

时间:2014-08-29 11:12:07

标签: javascript jquery

我的脚本有问题。 它只是部分工作。如果我输入少于15个字符,则会出现警报,但随后我会在警报按摩上单击“确定”,无论如何都会发送。我不确定我做错了。这是我的剧本:

function checktextarea() {
var minLength = 15;
var $textarea = $('#massage');
if($textarea.text().split(/\s+/).length < minLength) {
  alert('You need to enter at least ' + minLength + ' words');
    return false;
 }
}

这是html:

<form action="kontaktsi.php" name="myForm" id="myForm" method="post" class="contact_form" onsubmit="checktextarea()">
 <span class="sporo">
  <input type="text" id="fname" name="fname" class="contacttextform form-control" placeholder="Name" required>
 </span>
 <input type="email" id="email" name="email" class="contacttextform" placeholder="Your email" required><br><br>
 <textarea name="message" id="message" cols="8" rows="8" class="contacttextarea" placeholder="text text text?" required></textarea>
 <br>
 <div class="send">
  <input name="send" type="submit" class="contactformbutton" style="width:150px;" value="Send">
 </div>
</form>

3 个答案:

答案 0 :(得分:1)

将您的<form>标记更改为:

<form action="kontaktsi.php" ... method="post" onsubmit="return checktextarea()">

您需要在调用中添加return,以便将布尔值false传递给提交事件。

您的脚本中还有一个拼写错误:将$('#massage')更改为$('#message') 最后,您需要使用val()代替text()来获取<textarea>的值。 这是最后的剧本:

function checktextarea() {
    var minLength = 15;
    var textarea = $('#message');
    if(textarea.val().replace(' ') < minLength) {
        alert('You need to enter at least ' + minLength + ' words');
        return false;
    }
    return true;
}

答案 1 :(得分:0)

我不是百分之百确定它是否是唯一的方法,但是上次我解决了这个问题时我避免了通用的onsubmit机制;正是因为在错误的情况下缺少打破方式。

相反,可以绑定jQuery submit事件,然后在出现错误时使用preventDefault(),如下所述:

http://api.jquery.com/submit/

甚至可以直接使用jQuery提交:Submit a form using jQuery

稍微多一些工作,但你有更好的控制。

答案 2 :(得分:-1)

试试这个

function checktextarea() {
  var minLength = 15;
  var $textarea = $('#massage');
  if($textarea.val().split(' ').length < minLength) {
    alert('You need to enter at least ' + minLength + ' words');
    return false;
  }
}