7
votes

Problème à l'aide de clic () sur l'entrée [TYPE = Fichier]

J'ai un problème avec le click () functon. Cela ne fonctionne pas dans l'opéra.

J'essaie de créer un fichier fichier = fichier cliqué sur onclick événement d'un autre élément. J'ai besoin de styliser mon entrée type = fichier de type "donc je l'ai fait invisible et l'a remplacé avec un bouton de style simple. Maintenant, je veux que l'élément de fichier soit cliqué lorsque le bouton est cliqué sur le bouton.

Je ne peux pas utiliser jQuery parce que j'utilise la bibliothèque Motoools pour un calendrier dans ma page et que cela fait un conflit lorsque j'essaie d'utiliser JQuery. J'ai également essayé d'éviter le conflit en utilisant jquery.noconflic (); mais je ne pouvais pas le faire parce que je suis nouveau à JQuery. Voici mon code HTML: xxx

et voici mon code javascript: xxx

J'ai aussi essayé ce code jQuery mais Je ne pouvais pas le faire fonctionner sans conflit avec la bibliothèque de motools: xxx


2 commentaires

Pourquoi avez-vous ajouté la balise JQuery si vous ne pouvez pas l'utiliser?


@Peehaa: il veut probablement de l'aide pour faire du travail de jQuery avec des motoools, donc une question tagged jQuery n'est pas si étrange du tout :)


6 Réponses :


2
votes

Je ne suis pas sûr pour le clic d'entrée (cela pourrait être impossible en raison des raisons de sécurité), mais votre code de sécurité n'est pas complètement correct. XXX

De toute façon, cette réponse vous dit ne peut pas faire ce que vous voulez dans l'opéra: Dans JavaScript, je peux faire un" clic "incendie d'événement par programme pour un élément d'entrée de fichier?


1 commentaires

Vous aviez raison sur JQuery Code :) Mais je l'ai fait de la manière décrite dans le lien que vous avez posté. Merci beaucoup pour l'aide.



3
votes

entrée [type = fichier] est un type d'entrée très particulier, vous ne pouvez pas vraiment faire beaucoup beaucoup avec elle, principalement pour des raisons de sécurité.

Je devine ici, mais vous voulez peut-être que vous possédez votre propre bouton de téléchargement de style? Dans ce cas, je dois vous décevoir, vous ne pouvez pas le faire avec HTML. Vous devez soit utiliser HTML5 ou Flash (comme SWFUpload)


6 commentaires

jsfiddle.net/sssnj/159 Vérifiez ce lien et vous verrez que vous pouvez avoir votre propre style Bouton de téléchargement :)


Oui, mais vous utilisez une visibilité : caché hack. Je pense que ce n'est qu'en raison de la bienveillance des navigateurs que cela fonctionne, et apparemment, cela n'entre pas dans l'opéra.


+1 parce que cela est vrai. Type d'entrée = fichier est très vulnérable au piratage et est donc assez enfermé dans ses caractéristiques. Oui, il y a des hacks qui travaillent dans la plupart des navigateurs pour la styles, mais ils sont juste que: les hacks, écrits pour contourner les limitations de sécurité. Et il y a toutes les possibilités d'arrêter de travailler dans les versions de navigateur futures si elles modifient la sécurité.


Je l'ai fait en donnant à l'élément de fichier opcity = 0 et z-index = 1 et en le remplaçant sur mon bouton. Maintenant, je n'ai pas besoin de fonction d'appel (). Donc, je peux finalement dire que vous pouvez avoir votre propre bouton de téléchargement stylé et que cela n'a pas d'importance que j'ai utilisé un tour pour le faire :)


Alors pourquoi êtes-vous même dérangé avec l'opéra? :RÉ


Ma solution passée consistait à définir des fichiers largeur sur 1 px et définissez la visibilité sur masquée et faire un fichier cliqué lorsque vous cliquez sur le bouton Styled. Mais maintenant, j'ai juste placé le fichier manifester mon bouton, définir la largeur sur la largeur des boutons, l'opacité 0 et le z-index 1. Donc, si une personne clique sur le bouton, cliquez sur le bouton est exécuté pour le fichier car il est placé devant le bouton.



-2
votes

Il est impossible de cliquer sur ce bouton à l'aide de JavaScript (comme des amis comme des amis) mais voyez ceci:

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Lorem ipsum</title>
    </head>
    <body>
        <input type="file" id="first" style="width:200px; background-color:red">
        <input type="file" id="second" style="width:200px; background-color:green; position:relative; left:-100px; opacity:0">
        <script>
            document.getElementById("first").onchange = function(){alert("first")}
            document.getElementById("second").onchange = function(){alert("second")}
        </script>
    </body>
</html>


2 commentaires

Merci. Je l'ai déjà fait de la façon dont vous avez décrit il y a 10 minutes.


Comment pourrait-il cliquer pour l'élément de fichier?



2
votes

C'est un bogue d'opéra, mais il est possible d'obtenir le résultat d'une manière différente, en utilisant


0 commentaires

2
votes

Ce n'est pas impossible: xxx

mais il ne fonctionne que si ceci est dans une fonction appelée via un événement de clic.

Donc, vous pourriez avoir suivi Configuration:

html: xxx

javascript: xxx


0 commentaires

0
votes

hmm ... cela fonctionne pour moi. En chrome. xxx

reset_upload () est une fonction jQuery.


0 commentaires