2014-09-23 4 views
0

나는 거의 엑셀을 복제하고 있다는 것을 알고있다. 테이블; 플러그인에서 의도 한 동작은 다음과 같습니다. a가 클릭되면 해당 값이 포함 된 값으로 대체되고 get은 동일한 값이므로 편집 할 수 있습니다. 그것은 작동하지만 문제는 새로 작성된 텍스트 입력을 클릭하면 값이 재설정되거나 ''로 지워집니다.클릭시 텍스트 입력 값을 계속 지우시겠습니까?

그게 뭔지 모르겠다. 이벤트 리스너를 시도했는데, .unbind, click, on, focus에 시도했다. 텍스트 상자를 reclicking하면 지우는 것이 발생하기 때문에. 나는 F12 이벤트 리스너를 사용하고 모든 것을 밟았지만, jquery가 기본적으로 자체적으로하는 일이 될지도 모른다고 생각하지만 anyonw가이 동작을 일으키는지를 알고 싶습니다.

$("td").click(function(event) 
{ 
    var value = $(this).text(); // gets the text inside section inside the td 
    var column = $(this).get(0).id; //gets id="" of the td that is how I indentify columns 
    var parent = $(this).parent().get(0).id; //gets the id of the row <tr id="x"><td id="> 

    if(column == "a" || column == "b") 
    { 
     return; 
    } 
    else if (column == "d" || column == "c") 
    { 
     $(this).children().replaceWith('<input type=email value=' + value + '>'); 
     $(this).children().focus(); 
    } 
    else 
    { 
     $(this).children().replaceWith('<input type=text value="' + value + '">'); 
     $(this).children().focus();   
    } 

    $(this).children().focusout(function(event){ 
     var new_value = $(this).val(); 
     $(this).parent().addClass("edited"); 
     $(this).replaceWith('<section>' + new_value + '</section>'); 
}); 

비슷한 질문 here을 요청하고있다하지만 내 질문을 해결하거나 내 문제가 해결되지 않습니다. 그들은 그가 그것을 주입하는 대신에 새로운 html을 추가 할 것을 제안했다. 어쩌면 ".replaceWith()?"를 사용하는 데 문제가있을 수 있습니다. ... idk, 나는 어디에서나 검색했습니다.

+0

당신은 그가 HTML은 자바 스크립트 코드와 함께 갈 제공 할 수 있습니다 :

html: <table> <td id="only_text"><p>some text</p></td> <td id='input_text'><input type="text" value="some text 2"/></td> </table> js: $(function(){ console.log($('#only_text').text()); console.log($('#input_text').text() +''); }) 

당신이 바이올린의 예를 볼 수 있습니까? 또는 jsfiddle.net에 예제를 넣으십시오. – Silkster

+0

http://jsfiddle.net/qzbrzm4x/1/ 커서 영역을 선택할 때도 동작을 볼 수 있습니다. 공백으로 멈추거나, 나도 알아 냈습니다. ? – Dracovic5

답변

0

value = {the text}/ 인 입력으로 셀을 바꾸므로 .text()는 이제 아무 것도 반환하지 않습니다.

예 : http://jsfiddle.net/qzbrzm4x/ (콘솔을 열고 실행)

+0

참, 참 .... (obv) 안에 있기 때문에 에 새로 클릭 할 때마다 클릭이 발생합니다. 이 문제를 해결하려면 어떻게해야합니까? 저는 js에 익숙하지 않아 코드를 작성하고 선형 방식으로 한번에 실행하는 데 익숙합니다. 따라서 나는 결코 다른 기능이 없다는 것을 상상하지 못했습니다. 즉, 기능이 완료되지 않은 채로 실행될 것입니다 ( – Dracovic5

+0

). 클릭하면 아이들을 확인하고 입력인지 확인하고, 그렇다면 다른 것을하십시오 (즉, 아무것도하지 마십시오. 함수에서 반환) ... 솔루션은 당신에게 달려 있습니다. 입력에서 포커스를 나갈 때 입력을 텍스트로 다시 변경할 수 있습니다. 이렇게하면 셀의 수명주기가 짧아집니다. 편집 중에는 입력으로 만 일시적으로 사용됩니다 – Etai

관련 문제