2010-01-05 17 views
14

Uwielbiam tę wtyczkę, ale w rzeczywistości większość ludzi nie zdaje sobie sprawy z tego, że może kliknąć tekst do edycji.JQuery JEditable - jak dodać widoczny przycisk Edit Me?

Najlepiej byłoby dodać przycisk obok tekstu lub prosty link [Edytuj], który użytkownik wyraźnie widzi, ale nigdy nie zostanie przesłany przez ajax.

Wszelkie pomysły?

+0

http://www.appelsiini.net/projects/jeditable to link do wtyczki, FYI. –

Odpowiedz

12

Wystarczy dodać zdarzenie do przycisku, który kliknie na polu jEditable:

<span class="jeditable">jEditable field</span> 
<input type="button" class="jeditable-activate" value="Edit me!" /> 

I w jQuery:

$('.jeditable-activate').click(function() { 
    $(this).prev().click(); 
}); 

To powinno wystarczyć. W końcu to samo, co użytkownik klikający element.

+1

To jest to! Dodałem $ (this) .hide(); do funkcji, aby ukryć go, a następnie użyj onblur pokazać go ponownie: onblur: function (value, ustawienia) { \t \t \t \t \t $ (this) .next() show();. \t \t \t \t}, Dzięki! – Sam3k

+0

To sprytnie :) Cieszę się, że mogłem pomóc. –

3

Komentarz Sam3k jest przydatny, ale nie doskonały. Powoduje to, że przycisk edytowania zmienia się ponownie przed ukryciem edytowalnych pól/przycisków. Aby rozwiązać ten problem, dodałem niestandardowe zdarzenie onCancel.

pierwsze dodaje domyślnie do $ .fn.editable.defaults dla nowego zdarzenia (tj onCancel: {})

Potem dodaje następujący kod w 2 miejscach w jquery.jeditable.js: (1) po uderzeniu w ucieczkę i (2) naciśnięciu przycisku anulowania.

if ($.isFunction(settings.oncancel)) { settings.oncancel.apply(self); } 

To wszystko.

$("#emailRow span").editable(url, { 
     type: 'text', 
     cancel: 'Cancel', 
     submit: 'OK', 
     onCancel: function() { 
      $("#emailEditLink").show(); 
     } 
    }); 
+0

Musiałem również dodać wydarzenie do ognia, gdy settings.onblur == 'cancel' – Josh

3

Dla link "edytuj", można użyć

<a href="#" onclick="$('.editable_textarea').trigger('click');>edit</a> 
0

Możesz dodać opcje do jeditable pokazać przycisk Prześlij,

$('#editable_field).editable(url..., 
{//options 
     type: 'text', 
     width: 230, /*input field width*/ 
     style: 'display: inline-block;width:260px', /*form width including input*/ 
     submit: '<span class="inlineEditSave"><img src="/beta/resource/images/icon/icon_save_check.png"/</span>',      
... 

submit przęsło z zaoszczędzić ikona zostanie dołączany w osobnej postaci

0

W wersji Jeditable 1.6.0 onblur może pełnić funkcję:

  } else if ($.isFunction(settings.onblur)) { 
       input.blur(function(e) { 
        settings.onblur.apply(self, [input.val(), settings]); 
       }); 
      } else { 

Więc jeśli chcesz ukryć zmienił, gdy użytkownik bądź kliknięcia z obszaru edycji ustawić tę funkcję wywołania zwrotnego, jeśli chcesz ukryć go tylko wtedy, gdy użytkownik naciśnie anulować następnie wybrać ustawienie onreset z oddzwanianiem.