2010-12-15 3 views
2

Ich habe ein Eingabefeld in einem Container. Dieser Container ist ziehbar, aber jetzt kann ich keinen Text mehr in das Textfeld eingeben. Wahrscheinlich, weil Sie in das Textfeld klicken müssen, um zu schreiben, und jetzt Maus bedeutet ziehen!Drag & Drop deaktiviert Eingabetextfeld! Hilf mir?

Oder vielleicht seine etwas komplett anders

Wer weiß, wie ich dieses Problem lösen kann? Vielen Dank im Voraus

können Sie den Code aus hier überprüfen, aber es ist ziemlich viel .. http://www.jsfiddle.net/AVG5a/

+2

sollten Sie etwas Code zeigen. Das kann sogar denen helfen, die sich nie damit konfrontiert haben, Ihnen zu helfen.Sonst verlierst du viele Helfer –

+1

Ich stimme zu, klingt wie eine interessante Frage, aber schwierig ohne Code zu beantworten! – Trufa

+0

danke für deinen Kommentar, ich dachte nur, es wäre zu viel und ich würde wahrscheinlich alle abschrecken, aber okay danke für dein Feedback – Opoe

Antwort

1

Verwenden jQuery[docs] und jQuery UI[docs]. Ich bin fast fertig mit der Konvertierung in jQuery, ich werde einen jsFiddle Link posten, wenn ich fertig bin.

Hier gehen Sie: http://jsfiddle.net/pswRh/

Nachdem Sie jQuery und jQuery UI lernen, dann ist es sehr einfach, ein Element ziehbar zu machen, und - optional - deaktivieren Sie es mit einem bestimmten Kind-Element ziehen.

HTML

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

CSS (optional)

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

JavaScript

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

Und voila! Sie haben gerade ein ziehbares div erstellt, aber Sie können immer noch das Eingabefeld eingeben, da das Element nicht gezogen wird.

Alternativ können Sie ein Handle angeben. Auf diese Weise können Sie das div nur mit dem angegebenen untergeordneten Element ziehen.

HTML, CSS

gleiche wie vorhergehende

JavaScript

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

mehrere Elemente durch ein Komma getrennt angeben (d.h. '#el1, #el2, #el3').

+0

Vielen Dank !!!! sehr hilfreich und beginnen, jquery sofort zu lernen! Danke Nyuszika7H !! – Opoe

+0

Gern geschehen, auch ich habe die Zähler entfernt, wie sie sind in den meisten Fällen zu kompliziert und unnötig. Wenn Sie eine Sache wie diese benötigen, verwenden Sie [: eq()] (http://api.jquery.com/eq-selector ": eq() Selector - jQuery API") oder [.eq()] (http://api.jquery.com/eq ".eq() - jQuery API") statt. – nyuszika7h

2

Fügen Sie diese auf appendFunction:

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

Diese mousedown Ereignisse für das Element mit der ID stornieren inputId0.

+0

Ich habe einen Zähler mit der ID's sollte es so sein; document.getElementById ("inputId" + Zähler) .addEventListener ("mousedown", Funktion (e) {e.stopPropagation();}, false; – Opoe

+1

ja es funktioniert, aber warum funktionieren die Checkbox und Tasten? –

+0

gut mit der Code über den Tasten funktioniert nicht mehr, seltsam – Opoe