4

><form>を含むを含むjquery-ui-dialogがあります<input type=file

一部のユーザーは、ボタンをクリックしてファイルダイアログを開くと、表示されません。

この問題が発生しているコンピューターは、インストールされているすべてのブラウザーで問題を再現できるため、この問題はブラウザーベースではありません。

  • クロム
  • Firefox
  • インターネットエクスプローラ

この問題はOSベースではありません。これは、次の問題の発生を確認したためです。

  • Windows XP
  • Windows7
  • Kubuntu 11.04

これらのOSでVMをインストールしましたが、ファイルダイアログは完全に機能しています。

だから私の質問は:誰かが何が起こっているのか考えていますか?

これが「コード」です:

<meta charset="utf-8">

    <link rel="stylesheet" href="http://matchfwd-statics.s3-website-us-east-1.amazonaws.com/asset_cache/css/e1b34bd841d9.css" type="text/css" media="all"> 
    <script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js'>

    <script>

      $(function() {
         $( "#dialog-form" ).dialog({
           autoOpen: false,
           height: 500,
           width: 550,
           modal: true,
           buttons: {
             "Send": function() {
              $( this ).dialog( "close" );
           },
           Cancel: function() {
             $( this ).dialog( "close" );
           }
           },
           close: function() {
            allFields.val( "" ).removeClass( "ui-state-error" );
           } });

       $( "#create-user" ) .button() .click(function() { $( "#dialog-form" ).dialog( "open" ); });
       });
 </script>
 <div class="demo">

  <div id="dialog-form" title="Create new user">
    <p class="validateTips">All form fields are required.</p>
    <form class="main-form" method="post" action="" enctype="multipart/form-data">
        <h3>Fill in some details</h3>
        <span class="title">Your profile will be submitted with your application:</span><br/>
        <div class="holder" style="position:relative;top:12px"><a style="color:#24c2c9;" href="></a></div>
        <br>
        <span class="title">Why would you be the right candidate?</span><br/>
        <div class="holder"><textarea class="" name="description" cols="58" rows="10"> </textarea></div>
        <span class="note"></span>
        <span class="title">Attachments&nbsp;<a href="#" id="add_attachment" class="plus">&nbsp;</a></span>
        <div id="attachments" class="holder"></div>
    </form>
</div>

<button id="create-user">Create new user</button>

<script type="text/javascript">
(function() {
   var counter=1;
   $("#add_attachment").click(function(e){
   e.preventDefault();
   var attachmentString = 'attachment-'+counter
   var inputString = '<input type="file" name="'+attachmentString+'" id="id_'+attachmentString+'" />'
   $(inputString).appendTo("#attachments")
   counter = counter+1
   })})();
 </script>
4

2 に答える 2

3

これ(OSX、Chrome)を経験したところ、あなたの質問が見つかりました。あなたが答えを見つけられなかったので、私は何かクレイジーなことをすることにしました。

$("input.file").live('click', function(element) { element.click() });

...それは実際に問題を解決します。; を付ける場合は注意してください。click() の後、要素にクリック メソッドがないというエラーが表示されます。

なぜこれが機能するのかわかりません。これは私が今まで実装した中で 2 番目に悪いハックであり、私はそれを恥じています。誰か、この醜い、醜いハックを私のコードに残す必要がないように、これを理解してください。

また、私の入力にはクラス「ファイル」があったため、ニーズに合わせてセレクターを変更する必要がある場合があることに注意してください。

于 2011-10-04T12:20:31.053 に答える
1

これは意味がありません。解決策を教えてくれたウィリアムに感謝します。何らかの理由であなたの答えにコメントすることはできません。

しかし、「;」がなくてもクリックなしの方法が得られます。

後で編集 気にしないでください、それは私にとってすべてを台無しにしていたイベントバブルでした.

于 2012-02-24T12:47:33.077 に答える