2012-11-22 3 views
0

일부 데이터가있는 일부 요소가 있습니다. 나는 그것을위한 변화하는 분야를 창조 할 필요가있다. 그래서 텍스트 요소를 사용하여이 요소의 텍스트를 변경합니다. 좋은 모든 일하지만 텍스트 langht 함께 condtion 추가하려는 경우 뭔가 제대로 작동하지 않습니다 ...이 내 코드 및 일부 피들 (http://jsfiddle.net/qzzKA/)입니다. 도움을 들으 ...jQuery로 textarea에서 요소의 텍스트를 바꾸는 방법

<div class="textchange_box"> 
    <span class="desc">data<br>data 
    </span> 
    <textarea name="desc" class="textfield"></textarea> 
    <span class="change">change</span> 
    <span class="save">save</span> 
</div>​ 

및 JQuery와 :이 하나

if (actual_value.length < 0) { 

:

$(".change").live('click', function() { 
    $(this).prev('.textfield').css('display','block'); 
    $(this).prevAll('.desc').css('display','none'); 
    $(this).next('.save').css('display','block'); 
    $(this).css('display','none'); 
}); 
$(".save").live('click', function() { 
    var default_value = $(this).prev('.desc').text().replace(/\r\n|\r|\n/g,"<br/>"); 
    var actual_value = $(this).prev('.textfield').text().replace(/\r\n|\r|\n/g,"<br />"); 
    $(this).prevAll('.textfield').css('display','none'); 
    $(this).prev('.change').css('display','block'); 
    $(this).css('display','none'); 
    if (actual_value.length < 0) { 
     $(this).prev('.desc').replaceWith('<span class="desc">' + default_value +'</span>'); 
    } 
    else if (actual_value.length > 0) { 
     $(this).prev('.desc').replaceWith('<span class="desc">' + actual_value +'</span>'); 
    } 
}); 
+0

당신이 사용하는'.val()'대신'는 .text()'를 시도 사용해야 동안 .prev()는, 이전의 모든 형제 자매를 통과 할 생각입니까? –

+0

질문과 관련이 없지만 마우스 나 다른 포인팅 장치를 사용하지 않거나 사용할 수없는 사용자에게는 작동하지 않으므로 스팬을 링크로 사용하는 것은 내게 필요한 옵션 오류입니다. – nnnnnn

+0

thx 나는 그것을 바꿀 것이다. 그러나 지금 나는이 문제를 고쳐야한다. ... – Lukas

답변

3

은 다음 줄을 교체

if (actual_value.length <= 0) { 

때 문자열 때문에 비어 있음 길이가 0이 아님 자발적인 번호.

UPDATE :
당신은 다른 오류가, 당신의 다음 두 줄 :

var default_value = $(this).prev('.desc').text().replace(/\r\n|\r|\n/g,"<br/>"); 
var actual_value = $(this).prev('.textfield').text().replace(/\r\n|\r|\n/g,"<br />"); 

다음과 같이해야한다 :

var default_value = $(this).prevAll('.desc').text().replace(/\r\n|\r|\n/g,"<br/>"); 
var actual_value = $(this).prevAll('.textfield').val().replace(/\r\n|\r|\n/g,"<br />"); 

그래서 대신 prev()prevAll()를 사용하여 텍스트 영역에 대한 val() 사용 text() 대신.

또한 여기 prevAll()를 사용해야합니다 :

$(this).prev('.desc').replaceWith('<span class="desc">' + actual_value +'</span>'); 

은 그래서 다음과 같습니다

$(this).prevAll('.desc').replaceWith('<span class="desc">' + actual_value +'</span>'); 

working fiddle를 참조하십시오.

은 기본적으로 가장 일반적인 오류는 당신은 당신이 prevAll()

+0

또는 부정적인 수 없기 때문에'=== 0'. – nnnnnn

+0

이것은 아무 것도 바뀌지 않습니다 – Lukas

+0

나는 당신의 바이올린을 더 깊이 들여다 보았고 좀 더 많은 오류를 잡았고, 나는 그들과 함께 나의 답변을 업데이트했고 또한 작동하는 바이올린을 올려 놓았습니다 :-) – Nelson

관련 문제