使用javascript处理文本区域时出现问题
脚本不工作: 请找出原因和补救措施使用javascript处理文本区域时出现问题,javascript,Javascript,脚本不工作: 请找出原因和补救措施 function validate() { if(document.complain.complain.value == '' || document.complain.complain_subject.value == ''){ alert("Hey! you can't left a field blank!"); return false; } else if(docume
function validate() {
if(document.complain.complain.value == '' || document.complain.complain_subject.value == ''){
alert("Hey! you can't left a field blank!");
return false;
}
else if(document.complain.complain.length >100) {
alert("Sorry!post the complain within 100 characters");
return false;
}
else{
return true;
}
}
表格为:
<form name="complain" method="POST" action="complains.jsp" onsubmit="return validate();">
<table>
<tr>
<td><input type="text" name="complain_subject"
value="Complain Subject here" maxlength="30"></td>
</tr>
<tr>
<td><textarea rows="6" name="complain" cols="73"
value="Complain body here" maxlength="100"></textarea></td>
</tr>
<tr>
<td><input type="submit" value="complain" name="operation"><input
type="reset" value="Reset" name="B2"></td>
</tr>
</table>
</form>
尝试检查值的长度而不是元素的长度。检查
document.complain.complain.value.length
或
此外,我认为textareas没有属性。这一行:
else if(document.complain.complain.length >100) {
这是错误的
应改为:
else if(document.complain.complain.value.length >100) {
此外,作为一般原则,我建议使用局部变量使代码更具可读性。此外,我建议以相同的方式执行相同的操作,因此如果必须比较最大长度,则还可以使用length属性检查最小长度。最后,像这样的函数可能很难理解,因为您有多个退出点。我建议做一些类似的事情:
function validate() {
var form = document.complain,
complaintMinLength = 1, complaintMaxLength = 100
complaintSubjectMinLength = 1,
complaintLength = form.complain.value.length,
complaintSubjectLength = form.complain_subject.value.length,
valid, msg
;
if (complaintLength < complaintMinLength ||
complaintSubjectLength < complaintSubjectMinLength) {
valid = false;
msg = "Hey! you can't leave a field blank!";
} else if (complaintLength > complaintMaxLength) {
valid = false;
msg = "Sorry! Your message exceeds the maxumum length of " + complaintMaxLength + " characters.";
} else {
valid = true;
}
if (!valid){
alert(msg);
}
return valid;
}
函数验证(){
var form=document.com,
complaintMinLength=1,complaintMaxLength=100
complaintSubjectMinLength=1,
complaintLength=form.complaint.value.length,
complaintSubjectLength=form.complaint\u subject.value.length,
有效,msg
;
if(complaintLengthcomplaintMaxLength){
有效=错误;
msg=“对不起!您的邮件超过了“+complaintMaxLength+”字符的最大长度。”;
}否则{
有效=真;
}
如果(!有效){
警报(msg);
}
返回有效;
}
当我调用validate()时,如果文本区域为空,则会调用它以显示警报。但是,如果我发布的消息超过100个字符,则警报不是showings/complaint/complaint/g--complaint是一个动词。我想抱怨这个问题,但是我需要超过100个字符…文本区域的maxlength属性不起作用。我写它只是为了记住数据库中该字段的分配大小。这真的很有帮助。thax再次非常有用
function validate() {
var form = document.complain,
complaintMinLength = 1, complaintMaxLength = 100
complaintSubjectMinLength = 1,
complaintLength = form.complain.value.length,
complaintSubjectLength = form.complain_subject.value.length,
valid, msg
;
if (complaintLength < complaintMinLength ||
complaintSubjectLength < complaintSubjectMinLength) {
valid = false;
msg = "Hey! you can't leave a field blank!";
} else if (complaintLength > complaintMaxLength) {
valid = false;
msg = "Sorry! Your message exceeds the maxumum length of " + complaintMaxLength + " characters.";
} else {
valid = true;
}
if (!valid){
alert(msg);
}
return valid;
}