2011-02-10 5 views
0

.NET에서 백엔드에 설정된 onclick 이벤트가있는 버튼이 있습니다. 이 체크 박스를 클릭 할 때 체크 박스jQuery로 onclick 함수 수정

<button class="img_button" onclick="if(buttonLoader(this)){WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('uxBtnRelease', '', true, '', 'somepage.aspx?oupid=5&fp=true', false, true))} return false;" type="button">Release</button> 
<input type="checkbox" checked="checked" id="myCheckbox"> 

에게 있습니다 옆에 버튼의 OnClick 함수 내부의 URL에 쿼리 문자열의 값을 변경해야합니다.

지금까지 나는이 있고, 생각이 맞다, 그러나 실행할 때 나는 오류가 점점 계속 : "catch되지 않은 구문 에러를 : 예기치 않은 불법 토큰"나는 기능을 변환 좀 해키 보인다 알고

var defaultReleaseOnClick=null; 
$("#myCheckbox").click(function(){ 
    var $releaseBtn = $(".img_button"); 
    if(defaultReleaseOnClick==null) defaultReleaseOnClick=$releaseBtn.attr("onclick"); 

    var newOnClickString = defaultReleaseOnClick.toString().replace(/&fp=[a-z]+'/i,"&fp="+this.checked); 
    $releaseBtn.removeAttr("onclick").click(eval(newOnClickString)); 
}); 

을 문자열로 바꾸고 치환을 한 다음 다시 함수로 변환하려고 시도하지만 다른 방법으로는 할 수 없습니다.

아이디어가 있으십니까? http://jsbin.com/asiwu4/edit

+0

서버에서 설정 한 기능이 이미 알려져 있습니까? 그런 다음 기본 클릭 이벤트를 방지하고 조정 된 값으로 알려진 클릭 이벤트를 실행하십시오. 그렇지 않다면 솔루션이 가장 좋은 것으로 보입니다 (좋지는 않지만 작동합니다). – jerone

답변

0

: 훨씬 쉽게 내 웹 개발자 수명을 만든 기술. 나는 각각에 필요한 스크립트가있는 두 개의 다른 버튼을 페이지에 렌더링하려고합니다. 체크 박스의 상태는 클릭 할 수있는 것으로 만 결정합니다.

0

가 새 FP 값이 숨겨진 양식 요소를 업데이트 할 수 없습니다 :

는 여기 데모를 설정 한?

<input type='hidden' name='fp' value='whatever' /> 

그런 식으로 양식을 게시하는 코드가 좀 더 일반적 일 수 있습니다.

1

왜 data- * 속성을 사용하지 않습니까? 예를 들어

당신의 doStuff() 기능 (또는 무엇이든 당신이 당신의 온 클릭 속성에있어)은 데이터-url 속성에서 읽고, 귀하의 checkbox.click 이벤트 그에 따라 변경에서 지금
<button ... onclick="doStuff(this);" data-url="something.aspx"></button> 

. 그렇게하면 regexes로 JavaScript 코드를 수정하지 않아도됩니다. 이는 내가 누구에게도 추천하지 않는 것입니다.

jQuery 1.4.3부터 jQuery.attr을 data- * 속성에서 읽을 필요가 없지만 jQuery.data을 사용하면 자동으로 데이터를 검색 할 수 있습니다. 방법).

간단한 예 :

<input type="submit" id="button" data-url="google.com"> 
<input type="checkbox" id="checkbox"> 

$('#button').click(function() { 
    alert($(this).data('url')); 
}); 

$('#checkbox').click(function() { 
    $('#button').data('url', 'bing.com'); 
}); 

http://jsfiddle.net/dSEpR/

또 다른 제안 : Read up on Unobtrusive JavaScript with jQuery, 실제로 훨씬 더 간단한 해결책을 발견

관련 문제