0

私はこのスクリプトをHTMLフォームに持っています

<button type="button" id="addUploadFile">Add Document</button>         
<input type="file" id="hiddenOpenFile" name="hiddenOpenFile" style="visibility:hidden;" />

<button type="button" id="button2">test</button>

および準備完了関数のJavaScriptスクリプト

$("#addUploadFile").live('click', function () {
      $('#hiddenOpenFile').trigger('click');
});

$("#hiddenOpenFile").live('change', function (event) {  
     alert(1);   
     $("#addbutton2").trigger('click');
});


$("#addbutton2").live('click', function () {
      alert(2)
});

問題は、Internet Explorer でファイルを選択してもアラート (2) が表示されないことです。他のブラウザでは非常にうまく機能します。

4

2 に答える 2

1

セミコロンがありません。

試す:

 alert(2);

addbutton2 を button2 に変更する必要があります。これがなければ、Chrome でも動作しません。トリガーしているクリック イベントが IE で発生していないようです。カスタムイベントを使用すると修正されます。例えば:

  $("#button2").trigger('gogogo');

そして、「gogogo」にバインドします:

  $("#button2").on('gogogo', function () {
    alert(2);
  });

このフィドルを参照してください: http://jsfiddle.net/UfRUa/3/

于 2012-05-10T06:57:01.283 に答える
0

addUploadFile ボタンをクリックした後、2 番目のボタン IDbutton2をFile Uploader ポップアップが表示されるように変更する必要があります。addbutton2ファイルを選択してポップアップを閉じます。この場合、hiddenOpenFile の change イベントが発生し、その後に addbutton2 のクリック イベントが発生します。

それはうまくいきます:

<html>
<head>
<script src="../libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<body>
<button type="button" id="addUploadFile">Add Document</button>         
<input type="file" id="hiddenOpenFile" name="hiddenOpenFile" style="visibility:hidden;" />

<button type="button" id="addbutton2">test</button>
<script>
    $("#addUploadFile").live('click', function () {
          $('#hiddenOpenFile').trigger('click');
    });

    $("#hiddenOpenFile").live('change', function (event) {  
         alert(1);   
         $("#addbutton2").trigger('click');
    });


    $("#addbutton2").live('click', function () {
          alert(2);
    });
</script>
</body>
</html>

更新:

私が知っているように、 $.live() は IE の「変更」イベントをサポートしていません:

ドキュメントhttp://docs.jquery.com/Events/liveへのコメントを読む

代わりにlivequeryを使用してみてください。

于 2012-05-10T08:45:39.123 に答える