4

我有一个 jquery-ui-dialog ,<form>其中包含一个<input type=file>

对于我的一些用户,当他们单击按钮打开文件对话框时:它没有出现。

该问题不是基于浏览器的,因为有此问题的计算机能够使用所有已安装的浏览器重现它:

  • 铬合金
  • 火狐
  • IE浏览器

该问题不是基于操作系统的,因为我已经看到出现以下问题:

  • 视窗XP
  • Windows 7的
  • 库本图 11.04

我已经使用这些操作系统安装了虚拟机,并且文件对话框运行良好。

所以我的问题是:有人知道发生了什么吗?

这是“代码”:

<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() 之后,它会给出一个错误,说该元素没有点击方法。

我不知道为什么会这样。这是我实施过的第二次最糟糕的黑客攻击,我为此感到羞耻。有人,请弄清楚这一点,这样我就不必在我的代码中留下这个丑陋,丑陋的黑客。

另请注意,我的输入具有类“文件”,因此您可能需要更改选择器以满足您的需要。

于 2011-10-04T12:20:31.053 回答
1

这没有任何意义,谢谢威廉的解决方案。出于某种原因,我无法评论您的回答。

但即使没有“;”,我仍然得到无点击方法。

后来编辑 没关系,这是一个事件泡沫,它把我的一切都搞砸了。

于 2012-02-24T12:47:33.077 回答