2013-06-03 5 views
16

Ich habe einen x-editierbaren Eingang, den ich benutze, um Benutzernamen zu bearbeiten. Die Standardaktion des Elements ist, wenn Sie auf sich selbst klicken, können Sie einen Wert bearbeiten. Aber ich möchte aktivieren klicken auf die .editable des Elements und in der Lage sein, den Wert in meiner Eingabe zu bearbeiten. Um Sachen hier zu verkürzen ist a jsfiddle meiner aktuellen Situation.X - editierbarer Eingang editierbar bei Klick auf anderes Element

jQuery:

$(function(){ 
    $.fn.editable.defaults.mode = 'inline'; 
    $('#publicname-change').editable({ 
    type: 'text', 
    url: '/post', 
    pk: 1, 
    placement: 'top', 
    title: 'Enter public name' 
    } 
); 

//ajax emulation. Type "err" to see error message 
$.mockjax({ 
    url: '/post', 
    responseTime: 100, 
    response: function(settings) { 
    if(settings.data.value == 'err') { 
     this.status = 500; 
     this.responseText = 'Validation error!'; 
    } else { 
     this.responseText = ''; 
    } 
    } 
}); 

HTML:

<div class="control-group control-group-inline"> 
    <label class="control-label labelModified" for="publicname-change">Public name:</label> 
    <div class="controls"> 
    <a href="#" id="publicname-change" class="editable editable-click inline-input">Mr. Doe</a> 
    <div class="edit">edit <i class="icon-pencil pencil-input-change"></i></div> 
    </div> 
</div> 

Es wäre schön, wenn mir jemand helfen kann und bearbeiten meine verknüpft jsfiddle in der beschriebenen Weise ich. Klicken Sie auf ".edit", um den Wert zu bearbeiten.

Antwort

40

Es hat eine Funktion namens ermöglichen Sie, dass bearbeiten aktivieren können

$('.edit').click(function(e){  
     e.stopPropagation(); 
     $('#publicname-change').editable('toggle'); 
}); 

Das wird nicht funktionieren, wenn Sie die erste Zeile nicht hinzugefügt werden, da das Standardverhalten bearbeitet auf Klick irgendein andere zu deaktivieren ist Element.

Edit:

Bearbeitung aktivieren nur auf dem Klick auf die Schaltfläche Bearbeiten und nicht der Text, setzen toggle Eigenschaft auf manual.

$('#publicname-change').editable({ 
    type: 'text', 
    url: '/post', 
    pk: 1, 
    placement: 'top', 
    title: 'Enter public name', 
    toggle:'manual' 
} 

JSFiddle

+0

Dank, aber ich habe es nicht geschafft, es zu lösen ... coulde Sie so freundlich sein und es in meinem jsfiddle bearbeiten? http://jsfiddle.net/jjdJX/ – dzordz

+1

Ich habe gerade aktualisiert Sie jsfiddle, überprüfen Sie es, ich weiß nicht, wie jsfiddle funktioniert, also hier ist der Link http://jsfiddle.net/jjdJX/1/ – bitkot

+0

Ich habe ein anderes Problem ... Vielleicht könntest du mir helfen, also stelle ich keine weitere Frage zu stackoverflow. Ich will es so machen, wenn .edit angeklickt wird, wird es versteckt ... – dzordz