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

时间:2013-02-08 22:31:45

标签: javascript jquery forms

我遇到了通过JavaScript将值从一个表单复制到另一个表单的问题,我可以在上一个问题的帮助下找到答案:“How to copy a value from one form's file upload field to another form's text field?

所以,谢谢!

但现在我有了一个新问题。当复制表单字段值时,在某些浏览器(例如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>

3 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

试试这个:

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

答案 2 :(得分:0)

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

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

为:

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

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

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