2013-08-06 6 views
1

Я работаю над приложением ASPP MVC4. У меня есть информация пользователя и кнопка редактирования, если любой пользователь хочет отредактировать свою информацию.Редактируемое текстовое поле в jQuery

Пользователь может редактировать свою информацию, дважды щелкнув по нему. Предположим, что если есть имя пользователя, пользователь может его отредактировать, щелкнув по нему двойное нажатие. Как только он нажимает на UserName, он редактируется с его значением в текстовом поле.

Как я могу сделать значение редактируемым с помощью текстового поля?

I tried-

$(function(){ 
    $('.double').on('dblclick',function(){ 
     var val=$(this).html(); 
     $(this).append('<input type="text" value=val/>'); 
    }); 
}); 

Но не успех.

Fiddle

ответ

3

Попробуйте использовать contentEditable attribute

$(".double").get(0).contentEditable = "true"; 

contenteditable атрибут перечислимого атрибут, ключевые слова пустая строка, правда, и ложь. Пустая строка и истинная ключевая карта соответствуют истинному состоянию. Ложное ключевое слово сопоставляется с ложным состоянием. Кроме того, существует третье состояние, состояние наследования, которое является отсутствующим значением по умолчанию (и недопустимым значением по умолчанию).

DEMO1 | DEMO2

+1

Это является удивительным, спасибо за давая мне знать, что-то новое сегодня. – Manoj

+0

является 'get (0)' подразумевается по длине содержимого? – Manoj

+0

Отсутствие содержимого, его 0-й элемент в селекторе. Другими словами, все div имеют класс «double», который становится редактируемым. –

0
$(function(){ 
    $('.double').on('dblclick',function(){ 
     var val=$(this).text(); 
     $(this).append('<input type="text" value=\"' + val + '\" />'); 
    }); 
}); 
+0

Спасибо, но как я не хочу добавлять текстовое поле. Есть ли другой способ просто изменить значение без добавления этого текстового поля? – Manoj

+1

@Manoz проверить мой ответ за то, что –

1

Попробуйте так:

Использование .replaceWith():

$(document).on('dblclick', '.double' function() { 
    var val = $(this).text(); 
    $(this).replaceWith('<input type="text" value="' + val + '" class="username" />'); 
}); 

И вернуться к DIV:

$(document).on('blur', '.username', function() { 
    var val = $(this).val(); 
    $(this).replaceWith('<div class="double">' + val + '</div>'); 
}); 

Demo

+1

исправил ваш JS, добавил класс для ввода и удаления некорректно экранированных котировок –

+0

@DKM, почему я не могу редактировать его более одного раза? – Manoj

+0

Вам понадобится делегирование делегирования для редактирования, потому что они генерируются динамически –

Смежные вопросы