2015-04-21 1 views
0

Я пытаюсь отредактировать текст на label. Я хочу:Как выбрать предыдущий элемент с помощью jquery «on»?

  1. Показать ярлык и скрытый текст.
  2. При щелчке метки: ярлык получает скрыть и текст. В окне показано, где я могу редактировать текст.
  3. В поле «Ввод» текстовое поле должно скрываться, а ярлык должен отображать введенный текст.

Вот пример кода. Но он не работает должным образом.

<h4>Editable labels (below)</h4> 
<span class="k-link"> 
<label class="pull-left">Dashboard</label> 
<input class="clickedit" type="text" id="731"/> 
</span> 

Demo

+0

Используйте 'contenteditable' атрибут может быть хорошим подходом для этого тоже. – kosmos

ответ

1

Заканчивать этот Demo.

Изменить код из

$('.k-link').on('click', ".clickedit.prev()", function (event) {.. 

в

$('.k-link').on('click', ".pull-left", function (event) {.. 

И добавить встроенный стиль CSS для

<input class="clickedit" type="text" id="731" style="display:none"/> 
+0

Спасибо за ответ. Это то, что я искал. Однако, когда я запускаю этот код в своем приложении, я получаю ошибку javascript, говорящую «Uncaught ReferenceError: hide is not defined». Но в скрипке, похоже, работает. Можете ли вы помочь мне в этом вопросе? – Prateik

+0

Не могли бы вы рассказать мне, какая строка ошибки у вас такая же с кодом скрипки? –

+0

Привет, я получил решение сейчас. Большое вам спасибо. :) – Prateik

0

Это функциональность вы хотите?

$(document).on('click', '#label', function() { 
 
    var that = $(this); 
 
    that.hide(); 
 
    $('#731').removeClass('hidden'); 
 
}); 
 
$(document).on('focusout', '#731', function() { 
 
    var that = $(this); 
 
    var val = that.val(); 
 
    that.hide(); 
 
    $('#label').after('<span>' + val + '</span>'); 
 
});
.hidden { display:none }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<h4>Editable labels (below)</h4> 
 
<span class="k-link"> 
 
<label id="label" class="pull-left">Dashboard</label> 
 
<input class="clickedit hidden" type="text" id="731"/> 
 
</span>

0

Это работает:

$(document).ready(function(){ 

    $(".clickedit").hide() 

    $(".pull-left").on("click", function(){ 
     $(this).hide() 
     $(".clickedit").show() 
    }); 

    $(".clickedit").on("blur", function(){ 
     $(this).hide() 
     $(".pull-left").text($(this).val()).show() 
    }); 

}); 
0

это работает, проверьте его я просто изменить селектор это было .clickedit.prev(), и я изменил его на .pull-left

$('.k-link').on('click', ".pull-left", function (event) { 
    $(this).hide(); 
    $(this).next().show().focus(); 
    event.stopPropagation(); 
    }); 

http://jsfiddle.net/anisboukhris/qho0uLzv/

+0

Спасибо за ответ. Это то, что я искал. Однако, когда я запускаю этот код в своем приложении, я получаю ошибку javascript, говорящую «Uncaught ReferenceError: hide is not defined». Но в скрипке, похоже, работает. Можете ли вы помочь мне в этом вопросе? – Prateik

+0

попробуйте установить последнюю версию jQuery, возможно https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js –

0

можно попробовать следующее:

$(document).ready(function(){ 
 
$("#f1").hide(); 
 
$("#text").hide(); 
 
var $curr = $("#start"); 
 
$curr.css("background", "#f99"); 
 
$("button").on('click',function() { 
 

 
    $curr = $curr.prev();// this will go to previous div as you have asked how to get previous element. 
 
\t $curr.show(); 
 
}); 
 
$("#label").on('click',function() { 
 
\t $("#label").hide(); 
 
\t $("#text").show(); 
 
\t $("#text").blur(function() { 
 
\t \t $("#label").show(); 
 
\t \t $("#text").hide(); 
 
\t \t $("#label").html($("#text").val()); 
 
\t }); 
 

 
}); 
 

 
    });
div { 
 
    width: 150px; 
 
    height: 40px; 
 
    margin: 10px; 
 
    float: left; 
 
    border: 2px blue solid; 
 
    padding: 2px; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<div id="f1"><span id="label">Came to previous div</span><input type="text" id="text" /></div> 
 

 
<div id="start"></div> 
 

 
<p><button>Go to Prev</button></p>