2010-12-15 82 views
2

J'ai un champ de texte d'entrée dans un conteneur. Ce conteneur est déplaçable, mais maintenant je ne peux plus entrer de texte dans le champ de texte. Probablement parce que vous devez cliquer à l'intérieur du champ de texte pour taper, et maintenant la souris vers le bas signifie faire glisser!Glisser-déposer désactive le champ de texte d'entrée! Aidez moi?

Ou peut-être est quelque chose complètement différent

Est-ce que quelqu'un sait comment je peux résoudre ce problème? Merci à l'avance

vous pouvez vérifier le code ici, mais son à peu près .. http://www.jsfiddle.net/AVG5a/

+2

vous devriez montrer du code. Cela peut aider même ceux qui n'ont jamais fait face à cela, pour vous aider.Sinon, vous perdez beaucoup d'aides –

+1

Je suis d'accord semble une question intéressante mais difficile à répondre sans code! – Trufa

+0

merci pour votre commentaire, je pensais juste que ce serait trop et je serais probablement effrayer tout le monde, mais d'accord merci pour vos commentaires – Opoe

Répondre

1

Utilisez jQuery[docs] et jQuery UI[docs]. J'ai presque fini de convertir en jQuery, je posterai un lien jsFiddle quand je le terminerai.

Ici, vous allez: http://jsfiddle.net/pswRh/

Après avoir appris jQuery et jQuery UI, il est très facile de faire un élément draggable, et - le cas échéant - désactiver le faisant glisser avec un élément enfant spécifié.

HTML

<div id='myDiv'> 
    <img src='http://dummyimage.com/100x100.png' id='pic' /> 
    <input id='textInput' /> 
</div> 

CSS (en option)

#myDiv { 
    width: 150px; 
    height: 200px; 
    border: 1px solid; 
    background: blue; 
    color: white; 
} 

JavaScript

$('#myDiv').draggable({ 
    cancel: '#textInput' 
}); 

Et le tour est joué! Vous venez de créer un div draggable, mais vous pouvez toujours taper dans le champ de saisie, car il ne fera pas glisser l'élément.

Vous pouvez également spécifier un handle. De cette façon, vous pouvez seulement faire glisser la div avec l'enfant spécifié.

HTML, CSS

même que précédemment

JavaScript

$('#myDiv').draggable({ 
    handle: '#pic' 
}); 

spécifier plusieurs éléments séparés par une virgule (à savoir '#el1, #el2, #el3').

+0

merci beaucoup !!!! très utile et commence à apprendre jquery tout de suite! Merci Nyuszika7H !! – Opoe

+0

De rien, j'ai enlevé les compteurs, car ils Si vous avez besoin d'une chose comme celle-ci, utilisez [: eq()] (http://api.jquery.com/eq-selector ": eq() Selector - API jQuery") ou [.eq()] (http://api.jquery.com/eq ".eq() - API jQuery") à la place. – nyuszika7h

2

Ajouter à ce appendFunction:

document.getElementById("inputId0").addEventListener("mousedown", function(e) { 
    e.stopPropagation(); 
}, false); 

Ceci annulera mousedown événements pour l'élément avec id inputId0.

+0

J'ai un compteur avec l'ID devrait-il être comme ça; document.getElementById ("inputId" + compteur) .addEventListener ("mousedown", fonction (e) {e.stopPropagation();}, false; – Opoe

+1

oui cela fonctionne, mais pourquoi la case à cocher et les boutons fonctionnent-ils? –

+0

bien avec le code au-dessus des boutons ne fonctionne plus, étrange – Opoe