0

我在通过 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>
4

3 回答 3

1

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

var  basename = fullFileName.split('\\').pop();

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

var basename = fullFileName;

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

if (indexof('/', basename) >= 0) {
    basename = basename.split('/').pop();
}
于 2013-02-08T22:36:11.770 回答
0

试试这个:

var field = $(this).val();
var index = field.lastIndexOf("\");
field = field.substr( index, field.length-index );
于 2013-02-08T22:35:48.390 回答
0

我终于想通了,它比我希望的要简单。我所要做的就是改变这条线:

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

到:

$("input[name='logofile']").val($(this).val().split('\\').pop());

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

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

于 2013-02-26T17:57:05.283 回答