1

ユーザーがチェックするはずのチェックボックスを含むページがあり、ポップアップウィンドウが表示されます。ポップアップ ウィンドウが正しく表示されます。ただし、ウィンドウを閉じることができませんでした。以下に示すように、ユーザーが送信をクリックするたびに closewindow 関数が呼び出されます。メッセージは表示されますが、ウィンドウが閉じません。以下のサンプルコードを参照してください。

//This is the content of the partial page that is being load in the popped up window.
@using (Html.BeginForm("StudentArchive", "Arvhive", FormMethod.Post, new { onsubmit = "CloseWindow()" }))
{

    @Html.HiddenFor(item => item.StudentID)
<table>
    <tr>
        <th>
            Student Archive Reason
        </th>
    </tr>
    <tr>
        <td>
            @Html.TextAreaFor(item => item.ArchiveReason)
        </td>
    </tr>
</table>

 <input type="submit" value="Submit" name="btnSubmit" id="ArchiveReasonSubmit" onclick="CloseWindow();" />
}


      <script type="text/javascript">
          function CloseWindow() {
              alert('I am closing window in reason for archive');
              $("#Window").data("tWindow").close();
//              $('#Window').prop("checked", "checked");
//              window.location.href = window.location.href;
          }
    </script>



//this script is in a studentDetails page which is where the checkbox that would open the window below located.



<script type="text/javascript">
    function chkArchive() {
        var s = document.getElementById('archiveCheckBox').checked;
        if (s == true) {
            OpenWindow(this);
        }

        if (s == false) {
            alert('checkbox is unchecked');
        }
    }
</script>


<script type="text/javascript">
        function OpenWindow(e) {
            var checkbox = document.getElementById('archiveCheckBox').value;
            if (checkbox == "false") {
                alert('It is false.');
            } else if (checkbox == "true") {
                $('#Window').data('tWindow').center().open();
            } 
        }
</script>

    <script type="text/javascript">
        function ClosingWindow() {
            $('#Window').prop("checked", "checked");
            window.location.href = window.location.href;
        }
    </script>


  @{Html.Telerik().Window()
  .Name("Window")
  .Visible(true)
  .Title("Reason for Archives")
  .Modal(true)
  .Height(600)
  .Draggable(true)
  .Visible(false)  //I could have added a variable set the default value to false to hide the window. However, I am not sure how to change it back to 
                   //yes after the user checks the checkbox for the first time. The only event that fire when a user check the checkbox is the javascript event to check the state
                   // of the checkbox and open the window.
  .Width(800)
  .ClientEvents(events => events.OnClose("ClosingWindow"))
  .LoadContentFrom(Url.Action("StudentArchive", "Student", new { StudentID = @ViewData["StudentID"] }, Request.Url.Scheme))
  .HtmlAttributes(new { onsubmit = "CloseWindow()" })
  .Render();
  }
4

1 に答える 1

0

jqueryライブラリが2回参照されていました。部分ビューページから削除しましたが、クエリは正常に機能します。これが私が問題を解決するのを助けるリンクです。

http://www.telerik.com/community/forums/aspnet-mvc/window/close-modal-window-from-within-the-window.aspx

于 2013-02-10T23:32:33.083 に答える