2017-05-03 4 views
0

私はファイルをダウンロードするためのボタンからなる単純なフォームしか持っていません。ここでのコードは次のとおりです。Download.phpダウンロードを係合させるために使用されるヘッダを持つ小型のPHPファイルです一度クリックした「ダウンロード」ボタンを隠そうとしています

<form method='post' action='download.php?file=file.txt' name='form1'> 
<button type='submit'>Telecharger</button> 
</form> 

、ここにある:

<?php 
    $filename=$_GET['file']; 
    header('Content-Type: text/plain'); 
    header("Content-disposition: attachment;filename=$filename"); 
    readfile($filename); 
?> 

私が何をしようとしているボタンを非表示にしたり、さユーザーがクリックした後のフォームこれまでのところ、私はcssとjavascriptリスナを使ってみようとしましたが、これまでのところ何もできませんでした。

ボタンをクリックするとファイルがダウンロードされますが、ボタンは隠されません。

フォームの送信後にボタンを非表示にするにはどうすればよいですか?

+0

Javascriptを使用すると、最も便利です。あなたのボタンに 'onclick'リスナーを追加し、それを' .hide'します。 – RepeaterCreeper

+0

は、 'onclick'が発生したときに' this.style.display = 'hidden''を実行することでそれを試しました。動作しません。 –

+0

あなたはPHPの提出をしています。あなたがしていることをあなたのボタンに隠すことはありません。ページはPHPの送信後にリロードされます。ボタンを非表示にしたい場合は、ダウンロードのためにajaxコールを送信する必要があります – shazyriver

答えて

5

あなたはJavascriptを使用することができます。

<form method='post' action='download.php?file=file.txt' name='form1'> 
    <button onClick='this.style.display = "none";' type='submit'>Telecharger</button> 
</form> 

がクリックだとき、これはあなたのボタンを非表示になります。 Hereはフィドルです。

0

Sthのようなものですか?

document.getElementById("downloader").addEventListener('click', function() { 
 
    this.style = "display: none;" 
 
});
<div> 
 
    <button type='submit' id="downloader">Telecharger</button> 
 
</div>

0

あなたは非常に少なくとも、そのようなクラスをあなたのボタンを与える必要があり、

<button class="button-toggle" type='submit'>Telecharger</button> 

、あなたが選択し、それを隠すためにバニラのJSを使用することができ、

document.getElementByClassName("test").addEventListener("click", function(event) { 
    event.target.style.visibility = "hidden"; 
    }, false); 

、またはjQueryを使用している場合

$('.button-toggle').click(function() { 
    $(this).hide(); 
}); 

あなたを近くにしてください。

0

ダウンロード方法を変更する必要があります。 PHPのサブミットはページを再読み込みするので、どちらのメソッドを使用しても機能しません。私はまだそれをテストしていないこれを試してください。しかし、それは動作するはずです。

<script> 
$('.download_button').click(function() { 
    $(this).hide(); 
}); 
</script> 
<a href="path_to_your_file" class="download_button" download> 
+0

検証済みの回答が私のために働いていました。フォームタグ以外のスクリプトではできなかったので、私はあなたのラインに沿って考えていました。なぜこれはうまくいったと思いますか? –

+1

この行のためです。ヘッダー( "Content-disposition:attachment; filename = $ filename");私はdownload.phpのこの行を見落としました。これは、あなたのPHPページが表示されずにダウンロードされたことを意味します。したがって、リロードは行われません。download.phpからこの行を削除すると、作業が停止します。 – shazyriver

0

以下が有効です。

<form method='post' action="javascript:alert('Hello there, I am being submitted');" name='form1' id="form"> 
    <button type='submit' id="hide">Telecharger</button> 
</form> 

<script type="text/javascript"> 

var button = document.getElementById("hide"); 

button.addEventListener("click", function(event){ 
    button.style.display = "none"; 
}); 

</script> 

私はちょうど何が起こっているかをチェックするために、フォームのアクションを変更していますが、アクションのパスでそれを置き換えることができます。

関連する問題