2011-01-02 3 views
5

フォームを送信する前にファイルが選択されていることをクライアント側でチェックします。jQueryを使用したポストバックのないタイプFILEのINPUTのクライアント検証

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

@using (Html.BeginForm("Upload", "Files", FormMethod.Post, new { enctype = "multipart/form-data" })) 
     { 
      <input id="File" name="File" type="file" size="80" /> 
      <input type="submit" name="name" value="Upload" />  
     } 

現在、このフォームは検証のためのポストバックを行っています。何がうまくいかないのですか?

答えて

3

"file"タイプの入力はセキュリティ上重要なコントロールであり、DOMを介してスクリプト化することはできません。ページを押すと、コントロールの値が機密ファイルのよく知られた場所に設定され、フォームが自動的に送信されます。このコントロールがスクリプト化可能な最後の時間は、1995年か1996年です。それはインターネットセキュリティのための非常にばかげた時間でした。

+0

はいますがユーザビリティ勝(冗談) – nick

+1

これはfalseです。 ''のファイル名を取得して空白か有効な拡張子があるかどうかを調べることができます。それを設定したり、ファイルへのローカルパスを取得することはできません。 –

8

@xOnはファイル要素を変更できないということは正しいですが、それを検証できるはずです。

ここには、控えめな検証を使用してフィールドに値と正しい拡張子が付いていることを確認するファイル要素があります。

<input type="file" 
    id="myImg" 
    name="logo" 
    data-val="true" 
    data-val-required="Oops, select the logo first!" 
    accept="jpg|jpeg" 
    data-val-accept="Sorry, we only accept jpegs." /> 
0
<input type="file" name="path" required> 

これはHTML5で私の作品

関連する問題