2011-02-28 7 views
0
function drawLabel(labelsIndex) { 

    // Check not deleted Label data:(DBID, text, styling, x, y, isDeleted) 
    if (!labelData[labelsIndex][5]) { 

    // Create 
    var newLabel = $('<div id="label' + labelsIndex + '" style="font-size:' + (labelData[labelsIndex][6] * currentScale) + 'px;z-index:9999;position:absolute;left:' + labelData[labelsIndex][3] + 'px;top:' + labelData[labelsIndex][4] + 'px;' + labelData[labelsIndex][2] + '">' + labelData[labelsIndex][1] + '</div>'); 
    $('#thePage').append(newLabel); 

    // Click edit 
    $('#label' + labelsIndex).dblclick(function() { 
     if (!isDraggingMedia) { 

      var labelText = $('#label' + labelsIndex).html(); 
      $('#label' + labelsIndex).html('<input type="text" id="labelTxtBox' + labelsIndex + '" value="' + labelText + '" />'); 

      document.getElementById('#label' + labelsIndex).blur = (function(index) { 
       return function() { 
        var labelText = $('#labelTxtBox' + index).val(); 
        $('#label' + index).html(labelText); 
       }; 
      })(labelsIndex); 

     } 
    }); 

코드는 div의 텍스트를 텍스트 상자로 바꾸고, 포커스를 잃으면 텍스트 상자가 사라지고 divs html이 텍스트 상자 값이됩니다.Jquery 범위 문제

Uncaught TypeError: Cannot set property 'blur' of null 
$.draggable.start.isDraggingMediaresources.js:27 
c.event.handlejquery1.4.4.js:63 

누군가가 나에게 감사할만한 점수를 주면 범위가 혼란 스럽다. 만약 누군가가 블러 함수를 실행 한 후에 제거하는 방법을 보여줄 수 있다면 좋을 것입니다. (바인딩 해제?)

답변

1

document.getElementById('#label' + labelsIndex).blur은 javascript 함수이며 덜 jquery입니다. 따라서 # 해시는 무의미합니다.

$('#label'+labelsIndex).bind('blur',function(){ 
    //labelText value goes here // 
}); 

편집

<div id="txt1">I am div</div> 
<textarea id="txt2">I am text</textarea> 


$('#edit_button').click(function(){ 
    var val = $('#txt1').hide().html();// hide the div,then get value, 
    $('#txt2').show().val(val);//show txtarea then put value of div into it 
}); 

$('#save_button');

+0

감사에 대한 반대를 수행합니다 :)를 복잡하게 걸쳐 정직 UR이 될,하지만 여전히 작동하지 않습니다! 흐림 효과에서 나는 텍스트 상자가 사라 지길 원합니다. –