2012-02-06 5 views
0

2 개의 라디오 버튼과 2 개의 드롭 다운 메뉴가있는 양식을 만들었습니다. 그러나 이제는 다른 2 개의 라디오 버튼과 2 개의 드롭 다운 메뉴 (jquery를 변경하지 않았습니다)가 추가되어 작동하지 않습니다.라디오 버튼 선택에 따라 드롭 다운 메뉴 표시/숨기기 - jquery

내가 그것을 jsfiddle에 업로드 한 : 나는 작업 라디오 버튼과 드롭 다운 모두 JQuery와에 변경해야하는 일 http://jsfiddle.net/qbawh/

.

양식에서 수행해야 할 작업은 다음과 같습니다. '아니오'가 1 일 때 사용됩니다. 드롭 다운을 회색으로 표시하고 싶습니다. '예'를 선택하면 사용자가 드롭 다운에서 선택할 수 있습니다. 나는 양쪽 모두가 독립적으로 일하기를 바란다.

+0

코드는 내가 그것으로 볼 것이다, 조금 지저분한있다. 그러나 나는 당신이하고 싶은 것을 이해하지 못합니다. "아니오"를 클릭하면 선택을 모두 해제해야합니까? – elclanrs

+0

감사합니다. 둘 다 독립적으로 작동합니다. 첫 번째 라디오 박스에서 아무 것도 선택되지 않으면 처음 2 개의 드롭 다운이 회색으로 표시되어야합니다. 아직 두 번째 라디오 상자에서 예를 선택했다면 드롭 다운에서 값을 선택할 수 있습니다. 또한 라디오 버튼의 이름을 추가하거나 드롭 다운 메뉴가 mysql에 링크되어 있으므로 변경할 수 없습니다. – user1191294

답변

1

html에서는 라디오 버튼이 동일한 name 속성을 가질 때 그룹으로 작동합니다. 따라서 네 개의 라디오 버튼 모두에 동일한 name을 지정하면 하나의 그룹으로 설정됩니다 (4 개 중 하나를 클릭하면 이전에 선택했던 라디오 버튼이 선택 취소됩니다). 이 문제를 해결하려면 두 번째 예/아니요 버튼을 다른 것으로 변경하십시오. name. 선택한 요소의 이름이 "colour1"및 "colour2"인 경우 첫 번째 예/아니요 라디오의 이름을 "discount1"로 설정하고 두 번째 설정을 "discount2"로 바꿀 수 있습니다.

그런 다음 두 번째 라디오 그룹에 새로 추가 한 name을 사용하도록 jQuery 코드를 업데이트하십시오.

테이블에 속하지 않는 tr 및 td 요소가 있다는 점에서 귀하의 html은 유효하지 않지만 처음 두 라디오와 관련 선택 요소를 동일한 상위에 넣을 수 있다면 일반적으로 의미가 있습니다 컨테이너 (tr 또는 div 또는 무언가)를 사용하면 간단한 jQuery 코드를 작성하는 것이 더 쉬워집니다.

같은 테이블 행의 라디오 및 관련 선택이 당신의 HTML을 수정하는 경우 예를 들어, 다음 (서로 다른 그룹에있을지라도) 모든 무전기 단일 .click() 핸들러를 할당 할 수

$('input[name^="discount"]').click(function() { 
    $(this).closest('tr').find('select').prop('disabled', this.value=='No'); 
}); 

이 이름으로 모든 입력에 .click 핸들러를 넣어 ^= attribute starts with selector를 사용하여 동일한 상위 행에 속하는 사람을 찾기 위해 jQuery를 사용하여 동일한 테이블 행만을 선택 요소를 활성화/비활성화합니다 "discount"로 시작합니다. 클릭하면 옷장 부모 요소를 찾아 해당 행의 모든 ​​선택 요소를 가져와 사용/사용하지 않도록 설정합니다.

+0

mysql에 연결되어 있고 동일한 필드 이름을 가지고 있으므로 Yes/No 버튼에 다른 이름을 붙일 수 없습니다. 대신 다른 ID를 부여 할 수 있지만 이름을 동일하게 유지할 수 있습니까? – user1191294

+0

아니요 라디오 버튼이 html로 그룹화되는 방법은 이름으로되어 있으므로 별도의 그룹에 별도의 이름이 있어야합니다. 그룹당 두 가지 선택 만있을 경우 두 라디오의 각 세트를 하나의 확인란으로 대체 한 다음 동일한 이름을 부여 할 수 있습니다. 또는 라디오 필드 이름과 데이터베이스 필드와의 관련성을 없애고 숨겨진 입력의 이름이 올바른 라디오 그룹마다 숨겨진 입력을 만들 수 있습니다. 버튼을 클릭하면 숨겨진 입력에 적절한 값이 설정됩니다. – nnnnnn

+0

@user - 각 그룹이 다른 '

'요소에 포함되어 있으면 라디오의 이름이 모두 같을 수 있습니다. – gilly3

0

첫 번째로 두 번째 라디오 버튼 그룹의 이름을 변경해야합니다. 모두 라디오 버튼입니다. 이제 드롭 다운 :

$(document).ready(function(){ 
    $('input[type="radio"]').change(function(){ 
     if($(this).val()=='No'){ 
      if($(this).attr('name')=='discount'){ 
      $('#colour1,#shade1').attr('disabled',true); 
      } else{ 
      $('#colour2,#shade2').attr('disabled',true); 
      } 
     } else { 
      if($(this).attr('name')=='discount'){ 
      $('#colour1,#shade1').removeAttr('disabled'); 
      } else{ 
      $('#colour2,#shade2').removeAttr('disabled'); 
      } 
     } 
    }); 
}); 

HTML을 변경하지 않아도됩니다. 나쁜 영어로 죄송합니다.

+0

감사하지만 구문 줄 20 : if ($ (this) .attr ('name'== 'discount') { – user1191294

0

라디오 버튼을 개별적으로 그룹화하려면 라디오 버튼에 다른 이름을 지정해야합니다. 따라서 validate 방법의 코드를 변경하십시오.

필자의 문제를 해결했습니다.

Demo

+0

@ user1191294 - 이걸보세요 – ShankarSangoli

+0

내 선생님이 너야. (당신) 이미 1 & 2, – user1191294

+0

네가 지금 3,4,5에 대해 쉽게 할 수있다 ... – ShankarSangoli

관련 문제