2017-10-23 3 views
1

대화 상자를 호출하기 전에 일부 매개 변수를 설정할 수있는 스크립트를 작성하려고합니다. OK, 라디오 버튼 그룹은 하나뿐입니다. 나는 호출하기 전에 대화의 제목을 바꾸고 어떤 라디오 버튼이 자유롭게 (문법적으로) 설정되었는지 계획했다. 첫 번째 호출은 스크립트가로드 된 후 라디오 버튼이 선택되지 않은 상태로 대화 상자를 표시합니다.하지만 그 중 하나를 선택하고 호출을 반복하면 (예 : 버튼을 눌러 호출) 이전에 선택된 라디오 버튼이있는 대화 상자가 표시되지만 반환 값은 "정의되지 않음" .
대화 상자 라디오 버튼 그룹을 설정/재설정하는 방법은 무엇입니까?

  1. 내가 호출이 그것을 내가 라디오 버튼을 재설정 할 수하고자하는

  2. 를 엽니 다하기 전에의 경우 설정 programmaticaly하는 (없음을 확인하지 않음) 대화 상자에서 라디오 버튼 중 하나를 선택하고자 : 나는이 필요 이전에 체크 됨

나는 여기 저기에 있지만 점수가없는 해결책을 시도했다.

<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 
    <link rel="stylesheet" href="//resources/demos/style.css"> 
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 
<script> 
$("#dialog-oc").dialog({ 
     modal: true, 
     width: 520, 
     resizable:false, 
     autoOpen: false, 
     buttons: { 
     Ok: function() { 
      var odg=$('input[name="radiooc"]:checked', '#dialog-oc').val(); 
      $('#dialog-oc input:radio:checked').each(function() { 
       $(this).attr('checked', false); 
      }); 
      $("#dialog-oc").dialog("close"); //close dialog 
      alert('Answer is '+odg); 
     } 
     } 
    }); 
}); 

//open dialog 
$("#dialog-oc").dialog("open"); 
$('#dialog-oc input:radio').prop('checked', false); //reset radiobuttons 
$(".second").attr('checked', false); //reset by using class 
//change title of dialog, this works OK: 
$("#dialog-oc").dialog("option", "title", "New title"); 

$(function() { 
    $("input").checkboxradio(); 
    $("fieldset").controlgroup(); 
}); 
</script> 

<body> 
<div class="widget" id="dialog-oc" title="Pick a one"> 
    <fieldset> 
    <legend>Pick quantity: </legend> 
    <label for="radio-1">1</label> 
    <input type="radio" name="radiooc" id="radio-1" class="second" value="1"> 
    <label for="radio-2">2</label> 
    <input type="radio" name="radiooc" id="radio-2" class="second" value="2"> 
    <label for="radio-3">3</label> 
    <input type="radio" name="radiooc" id="radio-3" class="second" value="3"> 
    </fieldset> 
</div> 
</body> 
+0

대화 상자를 열 때 어떤 라디오 버튼을 선택해야합니까? – Twisty

+0

대화 상자에서 확인 버튼을 클릭 한 후 어떤 라디오 버튼을 눌렀는지 읽을 수 있지만 대화 상자를 열기 전에 라디오 버튼을 설정할 수 없습니다. 또한 각 대화 상자를 열기 위해 모든 라디오 버튼을 선택 해제하여 마지막 호출에서 라디오 버튼이 선택되었는지 아무런 단서가 없도록 재설정 할 수 있기를 바랍니다. –

+0

Ok, 1 단계에서는 no 라디오 버튼을 확인해야합니다. 두 번째 단계에서 선택한 데이터가 저장된 위치는 어디입니까? – Twisty

답변

1

나는 이것이 도움이 될 것이라고 생각한다; 확실하지 않다.

작업 예 : https://jsfiddle.net/Twisty/t0a7uabq/

HTML

<button id="sel-btn">Select</button> 
<div id="dialog-oc" title="Pick a one"> 
    <fieldset> 
    <legend>Pick quantity: </legend> 
    <label for="radio-1">1</label> 
    <input type="radio" name="radiooc" id="radio-1" class="second" value="1"> 
    <label for="radio-2">2</label> 
    <input type="radio" name="radiooc" id="radio-2" class="second" value="2"> 
    <label for="radio-3">3</label> 
    <input type="radio" name="radiooc" id="radio-3" class="second" value="3"> 
    </fieldset> 
</div> 

자바 스크립트 당신은 라디오 버튼을 설정할 수있는 코드를 실행할 수있는 open 콜백을 사용할 수있다

$(function() { 
    $("#dialog-oc").dialog({ 
    modal: true, 
    width: 520, 
    resizable: false, 
    autoOpen: false, 
    buttons: { 
     Ok: function() { 
     var odg = $('#dialog-oc input:checked').val(); 
     $("#sel-btn").data("sel", $('#dialog-oc input:checked').attr("id")); 
     $('#dialog-oc input:radio').each(function() { 
      $(this).prop('checked', false); 
     }); 
     $("#dialog-oc").dialog("close"); //close dialog 
     } 
    }, 
    open: function(e, ui) { 
     if ($('#sel-btn').data("sel") !== null) { 
     var mySel = $('#sel-btn').data("sel"); 
     $("#" + mySel).prop("checked", true); 
     } 
    } 
    }); 

    //open dialog 
    $("#dialog-oc").dialog("open"); 
    $("#sel-btn").click(function() { 
    $("#dialog-oc").dialog("open"); 
    }) 
    $('#dialog-oc input:radio').prop('checked', false); //reset radiobuttons 
    $(".second").attr('checked', false); //reset by using class 
    //change title of dialog, this works OK: 
    $("#dialog-oc").dialog("option", "title", "New title"); 

    $("input").checkboxradio(); 
    $("fieldset").controlgroup(); 
}); 

checked. 대화 상자가 닫힐 때 선택한 ID를 저장하기 위해 .data() 기능을 사용했습니다. 이렇게하면 동일한 요소가 열릴 때 검사하도록 설정됩니다.

+0

안녕 친구, 당신의 모범을 보았습니다. 그러나 제 경우에는 도움이되지 않지만 도움을 주신 귀하 께 감사드립니다. –

+0

@ 루 두스 정확히 작동하지 않는 것은 무엇입니까? 아니면 당신의 코드와 다른 예제가 있습니까? 콘솔에 오류가 있습니까? – Twisty

+0

모든 것이 정상입니다. 코드를 채택하여 거의 눈에 띄지 않는 약간의 오류를 만들었지 만 개정 후에는 이제 괜찮습니다. 감사. –