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();

スラッシュをエスケープするための 2 つのバックスラッシュに注意してください。Linux/OS X はディレクトリ区切り文字としてスラッシュ (/) を使用するため、これは Windows ブラウザーの問題のみを修正します。

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']")、変数名に置き換えたときに、値がコピーされませんでした。私はそれを理解できませんでした。

これは最終的にはるかに単純になり、変数は必要ありません。スプリット/ポップは仕事をしたので、それを提案してくれたみんなに感謝します! あなたは私を正しい方向に押しやった。

于 2013-02-26T17:57:05.283 に答える