2012-09-04 5 views
1

며칠 동안 이것을 알아 내려고 노력했습니다. (초보자가 되려는 시도입니다!) 그래서 도움을 받으실 수 있습니다.체크 박스와 링크가있는 jQuery 모달 대화 상자

jscript 위젯은 계속 버튼을 표시합니다. 사용자가 버튼을 클릭하면 메시지를 표시하는 모달 대화 상자 (계약서 문서에 대한 하이퍼 링크 포함)와 계약서를 읽었는지 확인하기위한 확인란이 필요합니다. 대화 상자를 닫은 후 checkbox = 0이면 계속 버튼을 클릭하면 같은 대화 상자가 열립니다 (루프, 확인란이 클릭 될 때까지 : checkbox = 1). 여기

대화를 들어 내가 지금까지 함께 수집 한 코드 ...

입니다 :

<script type = "text/javascript"> 
document.body.onmousedown = function (e) { 
    var query = window.location; 
    var anchor1=query.hash.substring(1); //anchor without the # character 
    if(($(event.target).hasClass("gwt-Button")) && (anchor1=="step3")) 
    { 
     alert("Widget button clicked"); 
    } 
} 
</script> 

:

<a href="#" id="sdHc3" rel="simpleDialog3">Click to open dialog</a> 
<span style="display:none;" id="checkboxStatus"></span> 

<div style="display:none;" id="simpleDialog3"> 
    <h3>Terms and Conditions</h3> 
    <form id="checkboxForm"> 
     Please check box to confirm that you have read the <a href="assets/docs/agreement.html">agreement</a>: <input type="checkbox" class="chckbx" value="1" /> 
    </form> 
    <p><a href="#" class="close">Close</a></p> 
</div> 


<script type="text/javascript"> 
$('#sdHc3').simpleDialog({ 
    showCloseLabel: false, 
    open: function() { 
     $('#checkboxStatus').html(''); 
    }, 
    close: function() { 
     var c = []; 
     $('#checkboxForm :checkbox:checked').each(function() { 
      c.push($(this).val()); 
     }); 
     $('#checkboxStatus').html('Checked ' + c.join(', ') + '.').show(); 
    } 
}); 
</script> 

위젯 버튼을 클릭을 검출

'대화'코드가 제대로 작동하고 위젯 버튼 클릭 감지 코드도 제대로 작동합니다. 이것들을 모아 목표를 달성하는 방법은 현재 나에게 신비입니다. 미리 감사드립니다!

답변

1

그래서 위젯 버튼을 클릭하면 당신은 입력을 선택, 그렇지 않은 경우, 다음과 같은 대화 상자를 다시 표시되어 있는지 확인해야합니다 귀하의 회신 Owlvark에 대한

$(document).ready(function() { 
    // detect button click 
    $('.gwt-Button').click(function(ev) { 
     ev.preventDefault(); 
     var anchor = window.location.hash.substring(1); // remove # character 
     if (anchor != "step3") { 
      return; // not step 3 
     } 
     if ($('#checkboxForm .chckbx').is(':checked')) { 
      // checked 
     } 
     else { 
      $('#sdHc3').click(); // trigger dialog again 
     } 
    }); 

    // setup dialog 
    $('#sdHc3').simpleDialog({ 
     showCloseLabel: false, 
     open: function() { 
      $('#checkboxStatus').html(''); 
     }, 
     close: function() { 
      var c = []; 
      $('#checkboxForm :checkbox:checked').each(function() { 
       c.push($(this).val()); 
      }); 
      $('#checkboxStatus').html('Checked ' + c.join(', ') + '.').show(); 
     } 
    }); 
}); 
+0

감사합니다! 네, 그게 목표입니다. 또한 "동의"링크가/a 대화 상자에서 확인 확인란과 함께 열리면 좋을 것입니다. 코드를 함께 가져 오는 방법을 제안 할 수 있습니까? – Craig

+0

위젯 클릭 감지 코드를 대체 할 것을 제안했습니다. 계약 링크에 관해서는 링크를 클릭 할 때 Ajax를 사용하여 콘텐츠를로드하는 것이 가장 좋을 것이라고 생각합니다. – Owlvark

+0

감사! 위젯 클릭 감지 코드를 귀하의 코드로 대체했으며 코드의 '대화'섹션을 변경하지 않았습니다. 이제 버튼 클릭이 감지되지 않고 대화 상자가 나타나지 않습니다. 나는 이것으로 정말로 잃어버린 느낌입니다 - 당신이 줄 수있는 더 많은 의견을 주시면 감사하겠습니다. – Craig