Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript处理文本区域时出现问题_Javascript - Fatal编程技术网

使用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;
}