Как связать проверку jquery только с одной кнопкой, если их много? - PullRequest
1 голос
/ 14 мая 2010

Привет, В моем текущем проекте у меня есть сетка, кнопка поиска, текстовое поле для поиска, текстовое поле и кнопка отправки.

-Я должен ввести строку в поле поиска, затем нажать кнопку поиска. -при щелчке по кнопке поиска он извлекает все записи матчей и затем связывает их с сеткой просмотра.

- затем, когда я щелкаю запись в виде сетки, она должна привязывать поле ко второму текстовому полю.

  • наконец, я должен отправить страницу, нажав кнопку «Отправить». где проблема:

-проблема, что я использую плагин проверки jquery, который сделает второе текстовое поле, обязательна. -при нажатии кнопки поиска не разрешить обратную передачу, пока я не напишу что-то во втором текстовом поле.

Как сделать так, чтобы текстовое поле scond выполняло проверку только для обязательного поля только при нажатии кнопки отправки asp.net.

вот мой код:

<%@ Page Title="" Language="C#" MasterPageFile="~/Master.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="IMAM_APPLICATION.WebForm1" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

  <script src="js/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>

    <script src="js/jquery.validate.js" type="text/javascript"></script>
    <script src="js/js.js" type="text/javascript"></script>

     <script type="text/javascript">
         $(document).ready(function() {



     $("#aspnetForm").validate({


            // debug: true,


             rules: {

             "<%=txtFirstName.UniqueID %>": {

                 required: true


             }

                 },
                   errorElement: "mydiv",
             wrapper: "mydiv",  // a wrapper around the error message

             errorPlacement: function(error, element) {
                 offset = element.offset();
                 error.insertBefore(element)
                 error.addClass('message');  // add a class to the wrapper
                 error.css('position', 'absolute');
                 error.css('left', offset.left + element.outerWidth());
                 error.css('top', offset.top - (element.height() / 2));

             }



         });
     })



</script>

     <div id="mydiv">
    <asp:GridView ID="GridView1" runat="server" 

                        style="position:absolute; top: 280px; left: 30px; height: 240px; width: 915px;" 
                        PageSize="5" 
                    onselectedindexchanged="GridView1_SelectedIndexChanged" 
                        AutoGenerateColumns="False" DataKeyNames="idcontact_info">
                    <Columns>
                        <asp:CommandField ShowSelectButton="True" InsertVisible="False" 
                            ShowCancelButton="False" />
                        <asp:BoundField DataField="First_Name" HeaderText="First Name" />
                        <asp:BoundField AccessibleHeaderText="Midle Name" DataField="Midle_Name" />
                        <asp:BoundField DataField="Last_Name" HeaderText="Last Name" />
                        <asp:BoundField DataField="Phone_home" HeaderText="Phone Home" />
                        <asp:BoundField DataField="cell_home" HeaderText="Mobile Home" />
                        <asp:BoundField DataField="phone_work" HeaderText="Phone Work" />
                        <asp:BoundField DataField="cell_Work" HeaderText="Mobile Work" />
                        <asp:BoundField DataField="Email_Home" HeaderText="Personal Home" />
                        <asp:BoundField DataField="Email_work" HeaderText="Work Email" />
                    </Columns>
                </asp:GridView>
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
        DeleteMethod="Delete" InsertMethod="Insert" 
        OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" 
        TypeName="IMAM_APPLICATION.DSContactTableAdapters.contact_infoTableAdapter" 
        UpdateMethod="Update">
        <DeleteParameters>
            <asp:Parameter Name="Original_idcontact_info" Type="Int32" />
        </DeleteParameters>
        <UpdateParameters>
            <asp:Parameter Name="Title" Type="String" />
            <asp:Parameter Name="First_Name" Type="String" />
            <asp:Parameter Name="Midle_Name" Type="String" />
            <asp:Parameter Name="Last_Name" Type="String" />
            <asp:Parameter Name="Address1_Home" Type="String" />
            <asp:Parameter Name="Address2_Home" Type="String" />
            <asp:Parameter Name="City_Home" Type="String" />
            <asp:Parameter Name="State_Home" Type="String" />
            <asp:Parameter Name="Prov_Home" Type="String" />
            <asp:Parameter Name="ZipCode_Home" Type="String" />
            <asp:Parameter Name="Country_Home" Type="String" />
            <asp:Parameter Name="Phone_home" Type="String" />
            <asp:Parameter Name="Phone_Home_Ext" Type="String" />
            <asp:Parameter Name="Cell_home" Type="String" />
            <asp:Parameter Name="Fax_home" Type="String" />
            <asp:Parameter Name="Email_Home" Type="String" />
            <asp:Parameter Name="material_status" Type="String" />
            <asp:Parameter Name="DateOfBrith" Type="String" />
            <asp:Parameter Name="company" Type="String" />
            <asp:Parameter Name="Work_Field" Type="String" />
            <asp:Parameter Name="Occupation" Type="String" />
            <asp:Parameter Name="sub_Occupation" Type="String" />
            <asp:Parameter Name="Other" Type="String" />
            <asp:Parameter Name="Address1_work" Type="String" />
            <asp:Parameter Name="Address2_work" Type="String" />
            <asp:Parameter Name="City_Work" Type="String" />
            <asp:Parameter Name="State_Work" Type="String" />
            <asp:Parameter Name="Prov_Work" Type="String" />
            <asp:Parameter Name="ZipCode_Work" Type="String" />
            <asp:Parameter Name="Country_Work" Type="String" />
            <asp:Parameter Name="Phone_Work" Type="String" />
            <asp:Parameter Name="Phone_Work_Ext" Type="String" />
            <asp:Parameter Name="Cell_Work" Type="String" />
            <asp:Parameter Name="Fax_Work" Type="String" />
            <asp:Parameter Name="Email_work" Type="String" />
            <asp:Parameter Name="WebSite" Type="String" />
            <asp:Parameter Name="Note" Type="String" />
            <asp:Parameter Name="Groups" Type="String" />
            <asp:Parameter Name="InterPhoneHome" Type="Int32" />
            <asp:Parameter Name="InterMobileHome" Type="Int32" />
            <asp:Parameter Name="InterFaxHome" Type="Int32" />
            <asp:Parameter Name="InterPhoneWork" Type="Int32" />
            <asp:Parameter Name="InterMobileWork" Type="Int32" />
            <asp:Parameter Name="InterFaxWork" Type="Int32" />
            <asp:Parameter Name="rdoPhoneHome" Type="Int32" />
            <asp:Parameter Name="rdoMobileHome" Type="Int32" />
            <asp:Parameter Name="rdoEmailHome" Type="Int32" />
            <asp:Parameter Name="rdoPhoneWork" Type="Int32" />
            <asp:Parameter Name="rdoMobileWork" Type="Int32" />
            <asp:Parameter Name="rdoEmailWork" Type="Int32" />
            <asp:Parameter Name="locationHome" Type="Int32" />
            <asp:Parameter Name="locationWork" Type="Int32" />
            <asp:Parameter Name="Original_idcontact_info" Type="Int32" />
        </UpdateParameters>
        <InsertParameters>
            <asp:Parameter Name="Title" Type="String" />
            <asp:Parameter Name="First_Name" Type="String" />
            <asp:Parameter Name="Midle_Name" Type="String" />
            <asp:Parameter Name="Last_Name" Type="String" />
            <asp:Parameter Name="Address1_Home" Type="String" />
            <asp:Parameter Name="Address2_Home" Type="String" />
            <asp:Parameter Name="City_Home" Type="String" />
            <asp:Parameter Name="State_Home" Type="String" />
            <asp:Parameter Name="Prov_Home" Type="String" />
            <asp:Parameter Name="ZipCode_Home" Type="String" />
            <asp:Parameter Name="Country_Home" Type="String" />
            <asp:Parameter Name="Phone_home" Type="String" />
            <asp:Parameter Name="Phone_Home_Ext" Type="String" />
            <asp:Parameter Name="Cell_home" Type="String" />
            <asp:Parameter Name="Fax_home" Type="String" />
            <asp:Parameter Name="Email_Home" Type="String" />
            <asp:Parameter Name="material_status" Type="String" />
            <asp:Parameter Name="DateOfBrith" Type="String" />
            <asp:Parameter Name="company" Type="String" />
            <asp:Parameter Name="Work_Field" Type="String" />
            <asp:Parameter Name="Occupation" Type="String" />
            <asp:Parameter Name="sub_Occupation" Type="String" />
            <asp:Parameter Name="Other" Type="String" />
            <asp:Parameter Name="Address1_work" Type="String" />
            <asp:Parameter Name="Address2_work" Type="String" />
            <asp:Parameter Name="City_Work" Type="String" />
            <asp:Parameter Name="State_Work" Type="String" />
            <asp:Parameter Name="Prov_Work" Type="String" />
            <asp:Parameter Name="ZipCode_Work" Type="String" />
            <asp:Parameter Name="Country_Work" Type="String" />
            <asp:Parameter Name="Phone_Work" Type="String" />
            <asp:Parameter Name="Phone_Work_Ext" Type="String" />
            <asp:Parameter Name="Cell_Work" Type="String" />
            <asp:Parameter Name="Fax_Work" Type="String" />
            <asp:Parameter Name="Email_work" Type="String" />
            <asp:Parameter Name="WebSite" Type="String" />
            <asp:Parameter Name="Note" Type="String" />
            <asp:Parameter Name="Groups" Type="String" />
            <asp:Parameter Name="InterPhoneHome" Type="Int32" />
            <asp:Parameter Name="InterMobileHome" Type="Int32" />
            <asp:Parameter Name="InterFaxHome" Type="Int32" />
            <asp:Parameter Name="InterPhoneWork" Type="Int32" />
            <asp:Parameter Name="InterMobileWork" Type="Int32" />
            <asp:Parameter Name="InterFaxWork" Type="Int32" />
            <asp:Parameter Name="rdoPhoneHome" Type="Int32" />
            <asp:Parameter Name="rdoMobileHome" Type="Int32" />
            <asp:Parameter Name="rdoEmailHome" Type="Int32" />
            <asp:Parameter Name="rdoPhoneWork" Type="Int32" />
            <asp:Parameter Name="rdoMobileWork" Type="Int32" />
            <asp:Parameter Name="rdoEmailWork" Type="Int32" />
            <asp:Parameter Name="locationHome" Type="Int32" />
            <asp:Parameter Name="locationWork" Type="Int32" />
        </InsertParameters>
    </asp:ObjectDataSource>

                    <asp:TextBox ID="txtSearch" runat="server" 
                    style="position:absolute; top: 560px; left: 170px;" ></asp:TextBox>

                    <asp:Button ID="btnSearch" runat="server" Text="Search" 
                    style="position:absolute; top: 555px; left: 375px;" 
                    CausesValidation="False" onclick="btnSearch_Click"/>

                    <asp:Label ID="Label7" runat="server" Style="position: absolute; top: 630px; left: 85px;"
                    Text="First Name"></asp:Label>

                 <asp:TextBox ID="txtFirstName" runat="server" Style="top: 630px; left: 185px; position: absolute;
                    height: 22px; width: 128px"></asp:TextBox>   
 <asp:Button ID="submit" runat="server" Text="submit" />



</div>    
</asp:Content>

Ответы [ 2 ]

3 голосов
/ 14 мая 2010

Вы можете отключить блокировку отправки по умолчанию, передав параметр onsubmit , например:

 $("#aspnetForm").validate({
    onsubmit: false,
    rules: {
         "<%=txtFirstName.UniqueID %>": {
             required: true
         }

    },
    errorElement: "mydiv",
    wrapper: "mydiv",
    errorPlacement: function(error, element) {
       offset = element.offset();
       error.insertBefore(element)
       error.addClass('message');  // add a class to the wrapper
       error.css('position', 'absolute');
       error.css('left', offset.left + element.outerWidth());
       error.css('top', offset.top - (element.height() / 2));

    }
 });

Затем вызовите метод .valid() только для этой кнопки, например:

$("#<%=submit.ClientID%>").click(function() {
  return $("#aspnetForm").valid();
});

Когда вы специально нажимаете кнопку отправки, вы запускаете проверку, обычно плагин проверки настраивается до события <form> submit, но установка onsubmit:false останавливает его от этого. Это оставляет вам возможность вызывать проверку всякий раз, когда вы хотите вручную ... что делает этот вызов .valid(), только на той кнопке, на которой вы хотите его включить.

1 голос
/ 14 мая 2010

Я сделал так, чтобы две кнопки были не кнопками отправки, а обычными кнопками. Когда нажата кнопка, для которой вы хотите выполнить проверку, позвоните:

$("#aspnetForm").submit();

Это вызывает проверку, а затем (если она прошла) отправить.

Для того, кого вы не хотите подтверждать, вы можете позвонить:

$("#aspnetForm").get(0).submit();

Это получает базовый элемент DOM и вызывает его submit - это не вызовет событие 'onsubmit', созданное .validate

...