我的脚本有问题。 它只是部分工作。如果我输入少于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>
答案 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()
,如下所述:
甚至可以直接使用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;
}
}