2013-08-06 3 views
1

Asp.net MVC4 응용 프로그램에서 작업 중입니다. 사용자 정보가 있거나 편집 버튼이있어 사용자가 정보를 수정하고자 할 때 사용합니다.jQuery에서 편집 가능한 텍스트 상자

사용자는 정보를 두 번 클릭하여 편집 할 수 있습니다. 사용자 이름이있는 경우 사용자가 사용자 이름을 두 번 클릭하여 수정할 수 있다고 가정합니다. 사용자 이름을 클릭하자마자 텍스트 상자의 값으로 편집 할 수 있습니다.

어떻게 텍스트 상자로 값을 편집 할 수 있습니까?

나는
$(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 속성이 그 키워드 빈 문자열, 사실과 거짓 열거 속성입니다 사용할 수 있습니다. 빈 문자열과 참 키워드는 실제 상태에 매핑됩니다. false 키워드는 거짓 상태로 매핑됩니다. 또한 세 번째 상태 인 상속 상태가 있는데, 이는 누락 값 기본값 (및 잘못된 값 기본값)입니다.

DEMO1 | DEMO2

+1

이 굉장합니다, 감사합니다. – Manoj

+0

은'get (0)'은 내용의 길이를 의미합니까? – Manoj

+0

아니요. 내용이 아니고 selector의 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" />'); 
}); 

그리고 사업부로 다시 되돌릴 수 : 나를 새로운 오늘 뭔가를 알려 주셔서

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

Demo

+1

JS를 수정하고 잘못 입력 한 클래스를 추가하고 이스케이프 된 인용 부호를 잘못 제거했습니다 –

+0

@DKM, 왜 두 번 이상 편집 할 수 없습니까? – Manoj

+0

dynanamically –

관련 문제