Javascript 复制字段值并过滤掉除文件名以外的所有内容

Javascript 复制字段值并过滤掉除文件名以外的所有内容,javascript,jquery,forms,Javascript,Jquery,Forms,我在通过JavaScript将一个值从一个表单复制到另一个表单时遇到了一个问题,在我前面的问题的帮助下,我发现了这个问题:“ 所以,谢谢你 但现在我有一个新问题。复制表单字段值时,在某些浏览器(如IE)中,字段包含用户计算机上字段的本地路径(即“C:\Users\username\Desktop\file.png”),这显然在URL中不起作用 那么:在将文件复制到新字段之前,有没有办法过滤掉除了文件名本身以外的所有内容?还是事后再做 谢谢你的帮助 以下是我最新的简化代码: <script&

我在通过JavaScript将一个值从一个表单复制到另一个表单时遇到了一个问题,在我前面的问题的帮助下,我发现了这个问题:“

所以,谢谢你

但现在我有一个新问题。复制表单字段值时,在某些浏览器(如IE)中,字段包含用户计算机上字段的本地路径(即“C:\Users\username\Desktop\file.png”),这显然在URL中不起作用

那么:在将文件复制到新字段之前,有没有办法过滤掉除了文件名本身以外的所有内容?还是事后再做

谢谢你的帮助

以下是我最新的简化代码:

<script>
$(function(){
    bindGroups();
});

var bindGroups = function() {
    // First copy values
    $("input[name='logofile']").val($("input[name='logoname']").val());

    // Then bind fields
    $("input[name='logoname']").change(function() {
        $("input[name='logofile']").val($(this).val());
    });
};
</script>

<form action="/current-url" method="post" enctype="multipart/form-data">
<input type="file" name="logoname" value="1" />
<input type="submit" value="Upload" />
</form>

<form name="create_landing_page" action="/landing-page-url/" method="get">
<input type="hidden" name="logofile" />
<input type="submit" value="Generate Landing Page" /></form>

$(函数(){
绑定组();
});
var bindGroups=函数(){
//第一次复制值
$($(输入[name='logonfile']).val($($(输入[name='logonname']))).val();
//然后绑定字段
$(“输入[name='logoname']”)。更改(函数(){
$(“输入[name='logofile']).val($(this.val());
});
};
试试这个:

var field = $(this).val();
var index = field.lastIndexOf("\");
field = field.substr( index, field.length-index );

尝试使用split()和pop()的组合

注意双反斜杠以避开斜杠;这只会解决Windows浏览器的问题,因为Linux/OS X使用斜杠(/)作为目录分隔符,所以可以尝试一下(未经测试,因为我现在在iPad上)


我终于明白了这一点,这比我希望的要简单。我所要做的就是改变路线:

$("input[name='logofile']").val($(this).val());
致:

使用变量的问题是,当上传字段更改时,我必须刷新它,这并不难;单击上载按钮时,我刷新了变量。但由于某种原因,当我用变量名替换
$(“input[name='logoname'])
时,该值不会被复制。我想不出来


这最终变得简单得多,不需要变量。Split/pop完成了这项工作,因此感谢所有提出建议的人!你把我推向了正确的方向。

关闭,但文件名使用\not/
fullFileName.split(“\\”).pop()
@poploane我注意到,如果刚刚发布之后,在iPad上键入源代码是一个主要的麻烦(自动更正和编程彼此都不喜欢LOL)所以我花了一些时间来完成我的示例LOL。不过谢谢你的注意!由于某种原因,我无法让它工作……我觉得我的语法一定有问题?这是对的吗<代码>变量basename=(“输入[name='logonName']”)$(函数(){bindGroups();});var bindGroups=function(){//First copy values$(“input[name='logofile']).val($basename.val());};//然后绑定字段$basename.change(function(){$(“input[name='logofile'])).val($(this.val());})我认为应该在函数中声明basename,类似于var basename=$(“input[name='logonName'])。val()。。。正在处理basename$(“输入[name='logofile']”)val(basename);当我尝试任何一种解决方案时,文件名都不会被复制。我确信我一定错过了一些简单的东西……也许是在我复制值或绑定字段的那一边?
var filename=$(this.val().replace(/\\\/g,“/”).split(“/”).pop()用于文件名和URL。
var basename = fullFileName;

if (indexof('\\', basename) >= 0) {
    basename = basename.split('\\').pop();
}

if (indexof('/', basename) >= 0) {
    basename = basename.split('/').pop();
}
$("input[name='logofile']").val($(this).val());
$("input[name='logofile']").val($(this).val().split('\\').pop());