2011-08-09 3 views
3

J'ai un jquery-ui-dialogue qui contient un <form> qui contient une <input type=file>boîte de dialogue de fichier ne semble pas dans un jquery-ui-dialogue

Pour certains de mes utilisateurs lorsqu'ils cliquent sur le bouton pour ouvrir la boîte de dialogue de fichier: elle n'apparaît pas.

Le problème n'est pas basé sur un navigateur depuis l'ordinateur qui ont ce problème sont en mesure de le reproduire avec tous les navigateurs installés:

  • chrome
  • firefox
  • internet explorer

Le question n'est pas basée sur OS depuis que j'ai vu l'apparition du problème avec:

  • Windows XP
  • windows 7
  • Kubuntu 11,04

J'ai installé des machines virtuelles avec les systèmes d'exploitation et la boîte de dialogue de fichier fonctionne parfaitement. Donc, ma question est: Quelqu'un a une idée de ce qui se passe?

est ici le "code":

<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> 
+0

Si vous pouvez bien vouloir montrer le code avec les zones touchées ainsi que le script, nous pouvons peut-être avoir une idée avec ce qui se passe. – ace

+0

merci pour le lien, a essayé de briser certains des j avec une forte interaction de l'utilisateur, mais cela ne semble pas arriver. si cela se produit sur un seul ordinateur avec les trois navigateurs, nous devrons peut-être vérifier ce qu'il advient de la requête ajax pour ouvrir la boîte de dialogue. aussi, cela arrive-t-il seulement avec le bouton 'apply', ou aussi avec le bouton' share'. – ace

+0

Non, cela arrive sur plusieurs ordinateurs. Un vieux P4 avec XP, un nouvel ordinateur portable avec Windows 7 et un netbook avec Kubuntu. Mais le cas d'ubuntu est bizarre parce que le gars redémarre (pour une raison non-précise) et alors ça marche ... Le seul problème est quand on clique sur la pièce jointe dans la fenêtre contextuelle Appliquer, vous obtenez un dialogue de fichier. Sur certains ordinateurs, la boîte de dialogue n'apparaît pas. –

Répondre

3

Je viens de vivre cette (OSX, Chrome) et trouvé votre question. Parce que vous n'avez pas trouvé de réponse, j'ai décidé de faire quelque chose de fou.

$ ("input.file"). Live ('click', function (élément) {élément.click()});

... Cela résout en fait le problème. Notez que si vous mettez un; après le clic(), il va donner une erreur disant que l'élément n'a pas de méthode de clic.

Je ne sais pas pourquoi cela fonctionne. C'est le deuxième pire bidouillage que j'ai jamais implémenté et j'en ai honte. Quelqu'un, s'il vous plaît comprendre cela, donc je ne dois pas quitter ce vilain, moche bidouille dans mon code.

Notez également que mon entrée a la classe 'fichier', donc vous devrez peut-être changer le sélecteur pour répondre à vos besoins.

1

Cela n'a pas de sens, merci William pour votre solution. Je ne peux pas commenter votre réponse pour une raison quelconque.

Mais je reçois toujours la méthode sans clic même sans le ";".

Plus tard EDIT Ne vous dérangez pas, c'était une bulle d'événements qui était en train de tout bousiller pour moi.

Questions connexes