为什么我做不到“;或”;在我的JavaScript条件下?

为什么我做不到“;或”;在我的JavaScript条件下?,javascript,Javascript,嗨,我有下面的函数,当我在其中添加一个或条件时,它的行为会有所不同 <script> function checkfield(obj) { var full_name = obj.upload_image.value.toLowerCase(); var full_length = parseInt(full_name.length); var dotAt = parseInt(full_name.lastIndexOf(".")); var ext

嗨,我有下面的函数,当我在其中添加一个或条件时,它的行为会有所不同

<script>
function checkfield(obj)
{
    var full_name = obj.upload_image.value.toLowerCase();
    var full_length = parseInt(full_name.length);
    var dotAt = parseInt(full_name.lastIndexOf("."));

    var ext = full_name.substring((dotAt+1), full_length);
    if(ext == "jpg" || ext == "png")
        {
            //alert("Sorry! allowed file types are .png, .gif, .jpg");
            //return false;
            console.log("Correct Extention");
        }
        else{
            console.log("Wrong extention");
        }


    return false;
}
</script>

功能检查字段(obj)
{
var full_name=obj.upload_image.value.toLowerCase();
var full_length=parseInt(full_name.length);
var dotAt=parseInt(全名.lastIndexOf(“.”);
var ext=全名。子字符串((dotAt+1),全长);
如果(ext==“jpg”| | ext==“png”)
{
//警报(“对不起!允许的文件类型为.png、.gif、.jpg”);
//返回false;
控制台日志(“正确扩展”);
}
否则{
控制台日志(“错误扩展”);
}
返回false;
}

我在
|
操作符之前给出的任何内容都可以正常工作,而第二个操作失败。请有人指出我做错了什么,或者应该怎么做

您的条件很好,问题可能在于
ext
中的值。我会
console.log
它,或者查看调试器中的值,它可能不是您认为的那样


编辑,从评论中,您说文件名是text.PNG。“PNG”与“PNG”不同,您的条件很好,问题可能在于
ext
中的值。我会
console.log
它,或者查看调试器中的值,它可能不是您认为的那样

编辑,从评论中,您说文件名是text.PNG。“PNG”与“PNG”不同

试试这个

<script>
function checkfield(obj)
{
    var full_name = obj.upload_image.value.toLowerCase();
    var full_length = parseInt(full_name.length);
    var dotAt = parseInt(full_name.lastIndexOf("."));

    var ext = full_name.substring((dotAt+1), full_length);
    if(trim(ext) == "jpg" || trim(ext) == "png")
        {
            //alert("Sorry! allowed file types are .png, .gif, .jpg");
            //return false;
            console.log("Correct Extention");
        }
        else{
            console.log("Wrong extention");
        }


    return false;
}
</script>

功能检查字段(obj)
{
var full_name=obj.upload_image.value.toLowerCase();
var full_length=parseInt(full_name.length);
var dotAt=parseInt(全名.lastIndexOf(“.”);
var ext=全名。子字符串((dotAt+1),全长);
如果(修剪(外部)=“jpg”| |修剪(外部)=“png”)
{
//警报(“对不起!允许的文件类型为.png、.gif、.jpg”);
//返回false;
控制台日志(“正确扩展”);
}
否则{
控制台日志(“错误扩展”);
}
返回false;
}
试试这个

<script>
function checkfield(obj)
{
    var full_name = obj.upload_image.value.toLowerCase();
    var full_length = parseInt(full_name.length);
    var dotAt = parseInt(full_name.lastIndexOf("."));

    var ext = full_name.substring((dotAt+1), full_length);
    if(trim(ext) == "jpg" || trim(ext) == "png")
        {
            //alert("Sorry! allowed file types are .png, .gif, .jpg");
            //return false;
            console.log("Correct Extention");
        }
        else{
            console.log("Wrong extention");
        }


    return false;
}
</script>

功能检查字段(obj)
{
var full_name=obj.upload_image.value.toLowerCase();
var full_length=parseInt(full_name.length);
var dotAt=parseInt(全名.lastIndexOf(“.”);
var ext=全名。子字符串((dotAt+1),全长);
如果(修剪(外部)=“jpg”| |修剪(外部)=“png”)
{
//警报(“对不起!允许的文件类型为.png、.gif、.jpg”);
//返回false;
控制台日志(“正确扩展”);
}
否则{
控制台日志(“错误扩展”);
}
返回false;
}

如果使用正则表达式,可以在一行中验证多个扩展

// allows: jpeg, jpg, png, gif
if (/\.(jpe?g|png|gif)$/i.test(full_name))
{
}

如果使用正则表达式,可以在一行中验证多个扩展

// allows: jpeg, jpg, png, gif
if (/\.(jpe?g|png|gif)$/i.test(full_name))
{
}


@molvi您不必解析字符串长度属性的值……这应该可以工作。您能给出您试图输入的文件名的示例吗?@molvi您可以在一行中使用regexp进行检查(不带所有这些变量)<代码>如果(全名.search(/(\.jpg\.png)$/i)!=-1){…文件名是simply test.PNG,jpg.jpgi已经将整个文件名改成小写并进行了测试,我不知道发生了什么wrong@molvi您不必解析字符串的length属性的值…这应该可以。您可以给出您尝试输入的文件名的示例吗?@molvi您可以使用re进行此检查gexp在一行中(没有所有这些变量)。
if(full\u name.search(/(\.jpg\124;\.png)$/i)!=-1){…
文件名是简单的test.png,jpg.jpgi已经将整个文件名放在小写并进行了测试,我不知道出了什么问题JavaScript没有
操作符(只是
\124;
)据我所知,JavaScript没有
trim()
JavaScript没有
操作符(只是
|
),即使有,也会是小写=)据我所知,JavaScript没有
trim()
在调试器中,我得到了正确的扩展,如png、jpg,我是否需要对其进行修剪?或者其他任何操作it@G是的,请尝试修剪它,如果您询问f.ex.“png”=“png”,则该值类似于“png”,而不是“png”那就不行了。所以你得把它修剪一下,才能让它变好equal@Gmolvi-这里有一些JavaScript中使用regex或循环的trim函数:我尝试从phpjs中修剪,但仍然没有用。我相信这个值不需要修剪,因为我已经在console.log和debugger中确认了它。在debugger中,我有正确的exttion提交为png、jpg、do我必须修剪它?或其他任何东西it@G是的,请尝试修剪它,如果您询问f.ex.“png”=“png”,则该值类似于“png”,而不是“png”那就不行了。所以你得把它修剪一下,才能让它变好equal@Gmolvi-这里有一些JavaScript中使用正则表达式或循环的修剪函数:我尝试了从phpjs中修剪,但仍然没有用。我相信这个值不需要修剪,因为我已经在console.log和debugger中确认了它。这是非常棒的正则表达式。工作非常完美,但我仍然没有得到日志ic为什么在应用trim并在我输入OR运算符时确认值失败后,上述操作仍失败…这是一个很棒的正则表达式。工作完美,但我仍然不明白为什么在应用trim并在我输入OR运算符失败后确认值后,上述操作仍失败。。。