2013-07-15 20 views
13
私は(HTML)必須「ファイル」は、入力要素にしたい

メイキング「ファイル」は、入力要素は必須(必須)

<input type='file' required = 'required' .../> 

のようなものをしかし、それは動作しません。

この「」のマニュアルでは、「必須」属性がHTML5の新機能であることがわかりました。しかし、私は新機能をサポートしていないプロジェクトでHTML 5を使用していません。

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#upload').bind("click",function() 
    { 
     var imgVal = $('#uploadfile').val(); 
     if(imgVal=='') 
     { 
      alert("empty input file"); 
      return false; 
     } 


    }); 
}); 
</script> 

<input type="file" name="image" id="uploadfile" size="30" /> 
<input type="submit" name="upload" id="upload" class="send_upload" value="upload" /> 
+0

あなたにはJavaScriptが必要です。 –

+0

@MadaraUchiha javascriptオプションも良いです。伝えてください。 – Bere

+0

HTMLファイルをさらに提供してください。どこかに送信ボタンがあると思いますか?ファイル入力フィールドが空であるかどうかを宣言するjavascript関数をアタッチし、空の場合はエラーメッセージを返します。 – Tro

答えて

8

あなたはこのようにjqueryのを使用してそれを行うことができますまたはクラス。

See this demo

+0

ありがとうございます。しかし、フォームは複雑なものです。私は私のソリューションが可能な限り他の(フォーム)要素から独立していることを望んでいます。私は '送信'ボタン(またはその属性のいずれか)を(バインドして)使用したくありません。他の方法はありますか? – Bere

+0

フォーム構造を転記できますか? –

+0

要素とその属性は、Joomla XMLファイルで定義されています。フォーム要素の名前とIDは、表示される前にCMSによって変更/操作されます。誰かがXMLで参照されるフォーム要素の名前を変更した場合、全く異なる名前/ IDのペアが生成されることがあります。結果として私は接続を失うことがあります。私は少なくとも、要素が他のフォーム要素に依存しないように独立したものにしたいと思っています。 – Bere

3
var imgVal = $('[type=file]').val(); 
ヴィヴェックの提案に似

が、今あなたが入力ファイルのより一般的なセレクタを持っていて、特定のIDに依存していない - :

+1

これは本当の質問に対する答えではありません。 – Pere

3

フォームsubmitで実行されるポリフィルを作成することができます。例えば:

/* Attach the form event when jQuery loads. */ 
$(document).ready(function(e){ 

/* Handle any form's submit event. */ 
    $("form").submit(function(e){ 

     e.preventDefault();     /* Stop the form from submitting immediately. */ 
     var continueInvoke = true;   /* Variable used to avoid $(this) scope confusion with .each() function. */ 

     /* Loop through each form element that has the required="" attribute. */ 
     $("form input[required]").each(function(){ 

      /* If the element has no value. */ 
      if($(this).val() == ""){ 
       continueInvoke = false;  /* Set the variable to false, to indicate that the form should not be submited. */ 
      } 

     }); 

     /* Read the variable. Detect any items with no value. */ 
     if(continueInvoke == true){ 
      $(this).submit();    /* Submit the form. */ 
     } 

    }); 

}); 

このスクリプトは、フォームが送信されるため、その後required属性を有する各フォーム要素が入力された値を有してもループ待機します。すべてに値がある場合は、フォームを送信します。チェックする

例の要素は次のようになります。

<input type="file" name="file_input" required="true" /> 

(あなたはあなたのウェブサイト上でそれを使用している場合、コメントがこのコードを縮小化&削除することができます)

2

今のところ2017年、私ができる午前これを行うには -

<input type='file' required /> 

フォームを送信すると、ファイルを尋ねます。 HTML5へ Screenshot on Google Chrome

+0

私はこのアイデアが好きですが、これは私のケースでは効果がありません(Laravelのフォーム)。残念なことに:/ – daneczech

+0

@daneczechおそらくあなたはあなたの 'html'に'

'タグをつけていません – Ibo

1

おかげで、それはこのように簡単です:

<input type='file' required /> 

例:

<form> 
 
    <input type='file' required /> 
 
    <button type="submit"> Submit </button> 
 
</form>

関連する問題