2012-07-24 4 views
2

입력란 옆에 확인란이 있습니다. 확인란을 선택하면 텍스트 상자가 비어 있고 비활성화됩니다. 그러나 사용자가 해당 확인란의 선택을 취소하면 텍스트 상자에 반환 될 수 있도록 이전에 해당 텍스트 상자에 값을 저장하고 싶습니다. 여기 내 코드는 다음과 같습니다.Jquery가 이벤트 트리거에 동적 변수를 전달하고 저장합니다.

function disablePath() { 
    var currentPath; 
    $('#user_strategy').on('change','input[value="all"]', function(){ 
     var that = $(this); 
     if($(this).is(':checked')) { 
      currentPath = that.next().val(); 
      that.next().attr("disabled", "disabled").val(''); 
     } 
     else { 
      that.next().removeAttr("disabled").val(currentPath); 
     } 
    }); 
} 

텍스트 상자가있는 확인란 하나만 있으면 완벽하게 작동합니다. 내가하는 checkbox-textbox 조합이 여러 개있는 경우 문제가 발생합니다. 두 개 이상의 확인란을 선택하면 마지막 텍스트 상자 내용 만 저장됩니다. 따라서 이전에 체크 한 상자를 선택 해제하면 해당 텍스트 상자에 관계에 관계없이 체크 박스가 선택된 마지막 텍스트 상자의 값이 채워집니다. 이전 확인란의 텍스트 상자 값을 저장하는 방법이 있습니까? 내가 EVENTDATA를 사용할 필요가 있지만 지원이 크게 감상 할 수있다 방법, 불확실입니다 생각

http://kaboukie.net/stackoverflow/

: 여기에 라이브 코드입니다!

답변

2

Jquery의 .data() 메소드를 사용하여 데이터를 요소 자체에 첨부하는 것이 좋습니다.

$(function() { 
    function disablePath() { 
     var currentPath; 
     $('#user_strategy').on('change','input[value="all"]', function(){ 
      var that = $(this); 
      if($(this).is(':checked')) { 
       temp= that.next().val(); 
       that.data("currentPath" , temp); 
       that.next().attr("disabled", "disabled").val(''); 
      } 
      else { 
       that.next().removeAttr("disabled").val(that.data("currentPath")); 
      } 
     }); 
    } 
    disablePath(); 
}); 
0

데이터를 체크 박스에 속성으로 저장하는 방법은 어떻습니까?

http://jsfiddle.net/ruwJT/

$(function() { 
    function disablePath() { 
     var currentPath; 
     $('#user_strategy').on('change','input[value="all"]', function(){ 
      var that = $(this); 
      if($(this).is(':checked')) { 
       $(this).attr("x:savedData", that.next().val()); 
       that.next().attr("disabled", "disabled").val(''); 
      } 
      else { 
       that.next().removeAttr("disabled").val($(this).attr("x:savedData")); 
      } 
     }); 
    } 
    disablePath(); 
}); 

모범 사례되지 않을 수 있습니다,하지만 작동합니다.

0

문제는 당신이 currentPath을 설정할 때, 그것은 책임있는 요소를 기억하지 않는다는 것입니다) 여기

는 이미 제대로 작동하려면 테스트 한 것으로, 코드입니다.

이 문제를 해결하려면 각 체크 박스에 고유 한 ID 속성을 할당하고 해당 ID를 키 - 값 쌍의 텍스트 상자 값과 함께 키로 저장하십시오.

또는 jQuery의 .data() 메소드를 사용하여 임의의 요소에 비정상적인 데이터를 저장할 수 있습니다. http://jsfiddle.net/EP5bg/

을 참조하십시오.
관련 문제