0

私は 2 つの ASP.Net ページを持っています。1 つには、jQuery ダイアログ ウィンドウを保持する空の div と、検証したいコントロールを含む別のページの .load() コントロールに必要なコードが含まれています。(通常の HTML テーブルに含まれる ASP.Net テキストボックスです) 以下のコードは、ダイアログを開き、コントロールを含む 2 番目のページをロードするために使用されます。

 $(".open-dialog").click(function () {
    $("#hfAddressHash").val($(this).attr('class').split(' ')[1]);
    $.ajaxSetup({ cache: false }) //Stops annoying caching problem.
    $('#dialog').load('jQueryLoad.aspx?Hash='123' + ' #divTest');
    dlg.dialog('open');
  });

2 ページ目に表示されるコントロールの例は次のとおりです。

<table>  
      <tr> 
        <th>Source System(s)</th>
        <td width="160"><asp:Label ID="lblSource" runat="server"></asp:Label></td>
        <th>Firm</th>
        <td><div class="draggable"><asp:Label ID="lblCountry" runat="server"></asp:Label></div></td>
        <td width="20"><asp:ImageButton ID="imgArrow" runat="server" CssClass="copyAddress Country" ImageUrl="/Intranet/_Resources/Icons/arrow.png" /></td>
        <th>Firm</th>
        <td><asp:TextBox ID="txtCountry" CssClass="droppable" runat="server"></asp:TextBox></td>
      </tr>  

たとえば、jQuery検証を使用して、上記の「txtCountry」コントロールを必須フィールドにしたいと思います。私の検証とダイアログ機能のコードは次のとおりです。

  $("#form1").validate();

  if ($("#txtCountry").is(":visible")) {

    $("#txtCountry").rules("add", { required: true });
  }



  var dlg = $("#dialog").dialog({

    autoOpen: false,
    modal: true,
    height: 820,
    width: 860,
    buttons: {
      Cancel: function () {
        $("#dialog").dialog('close');
      },
      Submit: function () {
        if (!$('#form1').valid()) { // Validate on Submit
          return false;
        }


        var names = [];
        $('#cblTypes input:checked').each(function () {
          names.push($(this).val());
        });
        $.ajax({
          type: "POST",
          url: "AddressView.aspx/postAddress",
          data: '{"OwnerRef":"' + $("#hfClient").val() + '"}',
          async: false,
          contentType: "application/json; charset=utf-8",
          dataType: "json",
          success: function (msg) {
            form1.submit();
          },
          error: function (msg) {
            alert(msg.d);
          }
        });
      }
    }
  });

jquery ダイアログに含まれる「送信」ボタンを押すと、ページは「txtCountry」コントロールを意図したとおりに検証しません。ここで何が欠けていますか?

4

1 に答える 1

0

すぐにわかることが一つ。ajax 設定では、一部に json が含まれていますdata

data: '{"OwnerRef":"' + $("#hfClient").val() + '"}',

次のように変更します。

data: { OwnerRef: $("#hfClient").val() },
于 2013-10-04T16:29:44.967 に答える