2012-05-09 3 views
0

원하는 확인란을 선택하면 선택 양식 요소를 사용할 수 없게하는 스크립트를 만들고 싶습니다. 더 많은 시간이 필요할 것이므로 대상 선택 ID를 인수로 사용하는 함수로 만들고 싶습니다. 문제는,이 함수는 id를 인수로 전달할 때 작동하지 않는다는 것입니다. 반대로, 그것은 하드 코딩 된 ID와 함께 작동하는 것 같습니다.체크 박스가 jQuery로 선택되었을 때 선택 요소 비활성화

<select id="worldSelect" class="select" name="world"> 
<input id="worldcb" type="checkbox" checked="yes" value="any" name="world"> 

function toggleSelection(id){ 
    var el = '#' + id; 
    if (this.checked) { 
     $(el).attr('disabled', 'disabled'); 
    } else { 
     $(el).removeAttr('disabled'); 
    } 
} 

$(function() { 
    toggleSelection('worldSelect'); 
    $('#worldcb').click(toggleSelection); 
}); 
+0

toggleSelection ('worldSelect');는 작동하지만'$ ('# worldcb'). (toggleSelection); – Steve

+0

히야,이 짧고 좋은보십시오! http://jsfiddle.net/RqGnF/ 당신이 그것을 좋아하는지 알려주세요. 나는 이것을 대답으로 설정할 수 있습니다, 이것이 도움이 되었으면 좋겠습니다. –

+0

아니요, 그는 'var el ='# '+ id;'를 'var el ='# '+'worldSelect ';로 대체하면 효과가 있다고 말합니다. 그리고'toggleSelection ('worldSelect');' – Tyilo

답변

2

동일한 함수를 두 번 호출 할 수 없으며 함수가 id 변수를 기억할 것으로 기대합니다.

이 같은 뭔가를 할 수 그러나 :

function toggleSelection(e){ 
    var el = '#' + e.data; 
    console.log(arguments); 
    if (this.checked) { 
     $(el).attr('disabled', 'disabled'); 
    } else { 
     $(el).removeAttr('disabled'); 
    } 
} 

$(function() { 
    $('#worldcb').click('worldSelect', toggleSelection); 
});​ 

바이올린 : http://jsfiddle.net/4ZBne/1/

+0

'$ (el) .prop ('disabled', this.checked)'줄을 쓰지 않아도됩니다. 문제를 실제로 이해하고 OP가 의도 한 바에 +1. http://jsfiddle.net/4ZBne/2/ –

+0

@Interstellar_Coder 사실 jQuery에 대해서는 거의 알지 못합니다. 방금 클릭 기능을 보았습니다. – Tyilo

+0

은 매력처럼 작동합니다! 고맙습니다! –

1

방법에 대해 :

$('#worldcb').click(function() { 
    toggleSelection('worldSelect', $(this).is(':checked')); 
}); 

function toggleSelection(sel, chk) { 
    $('#' + sel).attr('disabled', chk); 
}​ 

jsFiddle example.

toggleSelection() 함수는 선택 상자의 ID 인 sel과 사용할 체크 상자 인 chk라는 두 개의 인수를 사용합니다.

+1

나를 위해 잘 작동했습니다! – s1x

관련 문제