0

フォームを検証したい

<input type="file" id="file[]">

ファイルがアップロードされたときにのみフォームを送信したいのですが、それ以外の場合はエラー メッセージ ポップアップが表示されます。問題は、複数のファイルをアップロードするコードを作成したことです。したがって、 の ID 属性は<input type="file">ですarray(file[])

私が試してみました

  1. document.getElementById('file').value
  2. document.getElementById('file[]').value
  3. document.getElementById('file[3]').value

しかし、毎回それは機能していません。firebugで確認しましたが、エラーが発生しています

 document.getElementById(...) // is null.
4

3 に答える 3

1

同じ ID を持つ複数の要素を作成することはできません。id use class='fileInput' の代わりに Use

var fileArr = document.getElementByClassName("fileInput") ;

次に、配列をループして、すべてのファイル入力が有効かどうかを確認します。

于 2013-01-29T17:54:21.553 に答える
1

[]あなたの問題は、ID に角かっこ ( ) を含めることができない可能性が非常に高いです。

HTML の id 属性の有効な値は何ですか? を参照してください。詳細については。

于 2013-01-29T17:51:46.057 に答える
0

IDが有効で一意であることを確認する必要があります。これはあなたの現在の問題のようです。

ただし、ID属性は、要素を現在のグループの外部から区別するために使用する必要があります。グループを構築するためにID値のある種のパターンを処理しようとすると、読み取り不能になる可能性があり、予期しないエラーが発生する可能性が高くなります(つまり、複数の要素に同じIDがあるか、要素IDが正しく計算されていません)。

代わりに、複数のDOM要素のグループを作成する場合はclass、jQueryが取得/反復するのが簡単な属性の使用を検討できます。

<input name="fname" type="text" class="grp-1" />
<input name="lname" type="text" class="grp-1" />
<input name="file" type="file" class="grp-1" />

このアプローチを使用すると、次のことが可能になります。

var myGroup = $('.grp-1');
var firstInput = myGroup.eq(0);
var secondInput = myGroup.eq(1);

また

myGroup.foreach(function(index){
    var element = $(this);
    // whatever needs to be validated with the current element
});
于 2013-01-29T18:05:56.030 に答える