1

このコードをChromeとFirefoxで実行したところ、うまく機能しました。テスト目的でInternetExplorerで実行すると、機能しません。javascript領事館を確認したところ、次のようになりました。SCRIPT5007:プロパティ「0」の値を取得できません:オブジェクトがnullまたは未定義です。誰かがこれが来る理由とそれを修正するために私ができることを教えてもらえますか?

$('#audiofile1').bind('change', function () {
    if (this.files[0].type != 'image/png') {
        $('#audiofile1').each(function () {
            $(this).after($(this).clone(true)).remove();
        });
        alert(this.files[0].name + ' is not a valid file type.');
    } else {
        if (this.files[0].size > '5000') {
            $('#audiofile1').each(function () {
                $(this).after($(this).clone(true)).remove();
            });
            var size = this.files[0].size;
            var maxSize = 100;
            var exceedingSize = size - maxSize;
            alert(this.files[0].name + ' exceeds the maximum file size');
        } else {
            $("#audiofile1").fadeTo(1500, 0.20);
            alert(this.files[0].name + ' was added successfully.');
        }
    }
});
4

3 に答える 3

2
if (this.files[0].type != 'image/png') {

イベントハンドラー内で、jQueryはthisハンドラーが登録されたDOM要素を作成します。その要素にプロパティが定義されていないか、filesそのプロパティの値がnullまたはundefinedです。

これは、InternetExplorer9以下がFileAPIをサポートしていないためです。File APIが利用できない場合は、ハンドラーのバインドをスキップする必要があります。

if ($('#audiofile1')[0].files) {
    $('#audiofile1').bind('change', function () {
        // ...
    });
}
于 2013-01-19T07:43:47.840 に答える
0

どうやら、IEはバージョン10以降のHTML5ファイルAPIのみをサポートしているようです。 したがって、IE 9では、.filesアクセスするプロパティはまったくありません。

残念ながら、これを回避する方法はわかりません。ただし、アップグレードするようにユーザーに指示したり、古いブラウザーのユーザーが実行していることを実行するための代替(サーバー側の可能性が高い)方法を提供したりする場合を除きます。あなたの場合、とにかくさらなる処理のために最終的にサーバーにファイルをアップロードすると仮定すると、それらをサポートしていないブラウザでのクライアント側のチェックをスキップして、ユーザーにファイルの種類を伝えるだけで済みます受け入れられました。

于 2013-01-19T07:49:01.960 に答える
0

Jquery UIダイアログを開こうとすると、この(同じ/類似の)エラーが発生します:SCRIPT5007:プロパティ'_focusTabbable'の値を取得できません:オブジェクトがnullまたは未定義です。

私が行った変更により、このエラーが発生したようです...:
a)Jquery 1.9.1に変更します
。b)Jquery UI 1.10.1に変更します
。c)ダイアログ呼び出しに「appendTo」オプションを追加しました。

a)+ b)> c)

以前はいくつかのサブフォーム要素が非表示/表示のdiv要素として配置されていた既存のページに(15)jqueryダイアログを追加したため、(c)を実行する必要がありました。モダリティを含むjqueryダイアログ機能を取得したかったのです。問題は、サブフォーム要素が要素の外側でドキュメントに追加することによってjqueryによって書き直されたため、フォームが送信されたときにダイアログのフォームフィールドが含まれなくなったことです。

とにかく、誰かがこの問題に対して上記よりも良い解決策を持っていますか?

于 2013-03-07T21:48:41.533 に答える