Javascript 使用onsubmit=";时文件验证不起作用;返回validate();功能

Javascript 使用onsubmit=";时文件验证不起作用;返回validate();功能,javascript,forms,validation,Javascript,Forms,Validation,我的另一个验证工作正常,如果我在其中一个输入上放一个onchange()函数,然后只对图像文件进行验证,那么它似乎可以工作,但是当我将相同的代码粘贴到onsubmit=“return validate()”函数中时,当我用一个错误的值按submit时,它只会提交表单并转到下一页 我猜有一个错误,我在chrome中检查了控制台,但是没有显示任何内容,我不太擅长用javascript处理错误,所以可能我遗漏了一些东西。这是我的代码,输入字段验证工作正常 这里有一个fiddle,但我无法让它工作,所以

我的另一个验证工作正常,如果我在其中一个输入上放一个onchange()函数,然后只对图像文件进行验证,那么它似乎可以工作,但是当我将相同的代码粘贴到onsubmit=“return validate()”函数中时,当我用一个错误的值按submit时,它只会提交表单并转到下一页

我猜有一个错误,我在chrome中检查了控制台,但是没有显示任何内容,我不太擅长用javascript处理错误,所以可能我遗漏了一些东西。这是我的代码,输入字段验证工作正常

这里有一个fiddle,但我无法让它工作,所以不确定fiddle是否适合表单,我在浏览器中检查了下面的代码,它在4个输入字段上进行验证,但当too图像不是有效图像时,它只是提交


您的问题似乎是:

if(document.getElementById('fm-tool_desc').value == "" || document.getElementById('fm-fm-tool_desc').length < 4 || document.getElementById('fm-tool_desc').value > 30){
     alert( "The Description should be between 4 and 65,000 characters" );
     document.getElementById('fm-tool_desc').focus() ;
     return false;
}
if(document.getElementById('fm-tool_desc')。值=“”| | document.getElementById('fm-fm-tool_desc')。长度<4 | | document.getElementById('fm-tool_desc')。值>30){
警报(“说明应在4到65000个字符之间”);
document.getElementById('fm-tool_desc').focus();
返回false;
}
ID
fm-fm-tool_desc
不存在。我的控制台给我一个
TypeError
,说
null不是一个对象

将此更改为
fm-tool_desc
,应该可以正常工作

请注意

我已将
function validate()
更改为
validate=function()
,并在函数定义的末尾添加了分号

提示


您的文件扩展名比较条件非常严格。您不需要分别比较小写和大写。您可以改用
ext.toLowerCase()=='gif'
.toLowerCase()
将以小写形式给出字符串)。

您的问题似乎是:

if(document.getElementById('fm-tool_desc').value == "" || document.getElementById('fm-fm-tool_desc').length < 4 || document.getElementById('fm-tool_desc').value > 30){
     alert( "The Description should be between 4 and 65,000 characters" );
     document.getElementById('fm-tool_desc').focus() ;
     return false;
}
if(document.getElementById('fm-tool_desc')。值=“”| | document.getElementById('fm-fm-tool_desc')。长度<4 | | document.getElementById('fm-tool_desc')。值>30){
警报(“说明应在4到65000个字符之间”);
document.getElementById('fm-tool_desc').focus();
返回false;
}
ID
fm-fm-tool_desc
不存在。我的控制台给我一个
TypeError
,说
null不是一个对象

将此更改为
fm-tool_desc
,应该可以正常工作

请注意

我已将
function validate()
更改为
validate=function()
,并在函数定义的末尾添加了分号

提示


您的文件扩展名比较条件非常严格。您不需要分别比较小写和大写。您可以改用
ext.toLowerCase()=='gif'
.toLowerCase()
将提供小写字符串)。

您的JSFIDLE设置为只运行代码加载,因此您尝试调用的函数不在全局范围内。浏览器抛出错误
Uncaught ReferenceError:validate未定义并提交

更改fiddle使用select方法加载JavaScript的方式,将代码放入头部


您的JSFIDLE设置为在加载时运行代码,因此您尝试调用的函数不在全局范围内。浏览器抛出错误
Uncaught ReferenceError:validate未定义并提交

更改fiddle使用select方法加载JavaScript的方式,将代码放入头部


在代码的第一行设置断点,然后单步执行函数以查找错误。如果验证功能中存在任何错误,则将提交页面。这是所有浏览器的默认行为。当您输入的值也不正确时,您是否收到“looks good”(外观良好)警报?注意:return不是一种方法,因此
return(true)
应该是
返回true在代码的第一行设置断点,然后单步执行函数以查找错误。如果验证功能中存在任何错误,则将提交页面。这是所有浏览器的默认行为。当您输入的值也不正确时,您是否收到“looks good”(外观良好)警报?注意:return不是一种方法,因此
return(true)
应该是
返回true
form {
    margin : 0 auto;
    text-align : center;
    width : 450px;
    font-size : 1.2em;
    font : 85.5%/1.5 arial, verdana, helvetica, tahoma, sans-serif;
}

form p {
    text-align : left;
    margin : 0.5em 0;
}

fieldset, #sub {
    margin : 1em 0;
    padding : 0 1em .5em;
    border : 0 none;
    border-top : #cccccc 1px solid;
}

#sub {
    border : 0 none;
}

legend {
    margin : 1em;
    padding : 0 1.5em;
    color : #003366;
    background : transparent;
    font-size : 1.1em;
    font-weight : bold;
}

legend.p {
    text-align : left;
    margin : 0.5em 0;
    padding : 0;
    color : #333333;
    font-size : 1.2em;
    font-weight : normal;
}

label {
    float : left;
    width : 110px;
    padding : 0 1em;
    text-align : right;
}

fieldset input, textarea, select {
    width : 250px;
    border-top : #555555 1px solid;
    border-left : #555555 1px solid;
    border-bottom : #cccccc 1px solid;
    border-right : #cccccc 1px solid;
    padding : 1px;
    color : #333333;
    margin-bottom : 0.5em;
}

.fm-multi {
    margin : 5px 0;
    border : 0 none;
    width : 100%;
}

.fm-multi input {
    width : auto;
    margin-bottom : 0;
    border : 0 none;
}

.fm-multi label {
    display : block;
    width : 200px;
    padding-left : 5em;
    text-align : left;
    margin : 0 auto 0.5em;
}

#fm-submit {
    clear : both;
    text-align : center;
    border : #333333 1px solid;
    padding : 1px;
    background : #555555;
    color : #ffffff;
    width : 7em;
    margin : 1em auto;
}

input:focus, textarea:focus {
    background : #efefef;
    color : #000000;
}

fieldset .fm-req {
    font-weight : bold;
}
if(document.getElementById('fm-tool_desc').value == "" || document.getElementById('fm-fm-tool_desc').length < 4 || document.getElementById('fm-tool_desc').value > 30){
     alert( "The Description should be between 4 and 65,000 characters" );
     document.getElementById('fm-tool_desc').focus() ;
     return false;
}