12

フォームに他のテキスト フィールドと一緒にフィールドが<input type="file" >あります。参照ボタンを使用してファイルをアップロードし、送信ボタンをクリックすると、input type= "file" フィールドの値が消えます。参照した値をエラーが他のフィールドに存在する場合、<input type="file" >フィールドに残ります。ブラウズされた値を保持し、<input type="file" >送信ボタンがクリックされたときにフィールドに残るようにする方法はありますか?

<form action="form.php" method="post" enctype= multipart/form-data> 

<input type="file" value="$file" name="file"/> 
<input type="text" value="$line" name="line"> 
 <input type="submit"  name="btnsubmit"> 

</form> 

if($_POST['btnsubmit']) 
{
$line =$_POST['line'];
$file =$_FILES['file'] ['name'];

if($line) 
{
//do something
//conditions for   file check   here 

}
else 
//error 

}
4

4 に答える 4

9

これを行うことはできません。ブラウザのセキュリティにより、[ファイル] 入力フィールドに事前入力することはできません。これにより、Web サイトは、ユーザーが最初に許可する ([参照...] をクリックしてファイルを選択する) ことなく、自分の意志でプライベート ファイルを盗むことができなくなります。

編集:これをネイティブに行うことはできませんが、CSS ウィザードを使用して、以前に選択したファイル名をファイル入力ボックスの横に表示して、ユーザーにヒントを与えることができます。本当にクールになりたい場合は、ブラウザーのネイティブ ファイル入力テキスト表示領域を、以前のファイル名が入力された別の div でオーバーレイすることもできます。しかし、これでは入力領域をクリックできなくなるため、ユーザーフレンドリーではありません。仕事が多すぎて、報酬が少ない。

于 2012-07-11T06:04:06.877 に答える
1

これを行うには 1 つの方法があります。ユーザーが実際にページを離れたり、フォームを「送信」したりしないように、 AJAX 送信メソッドを使用して検証のためにフォームの詳細を送信します。そうすれば、サーバー側で結果を検証できますが、ユーザーにはファイル入力を含むすべての値が入力されたままです。

于 2013-10-25T06:45:59.267 に答える
1

これは、ブラウザ ベンダーによってreadonly.

于 2012-07-11T06:05:19.103 に答える
0

前述のとおり、input[type=file]読み取り専用です。クライアント側で入力を検証することにより、すべてのフィールドが有効でない限り、送信が行われないようにすることができます。...そして、ほとんどの場合、はるかに優れたユーザー エクスペリエンスを提供します!

jquery.validation やお気に入りのフレームワーク用のその他の検証プラグインを確認するか、自分で作成してください。サーバー側でも検証する必要があることに注意してください。

リクエストを防止することで、ファイル入力はすべてのフィールドが OK になるまでその値を保持します。サーバー側の検証が必要な場合は、ajax を使用してこれを行うこともできます。

于 2012-07-11T06:10:57.170 に答える