页面上的两个单独的搜索表单要求在验证时填写彼此的字段
Two separate search forms on page are requiring each other's fields to be filled out on validation
我有一个页面有两个单独的搜索表单,一个用于按项目 ID 搜索,一个用于按关键字搜索。它看起来像这样:
我从最上面的开始,我现在添加最下面的。底部的基本上是第一个的复制和粘贴(两者都是 Sitecore 中的组件)。这是每个的代码:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SearchByItemNumber.ascx.cs" Inherits="Bayer.CropScience.SC.Internet.US.Website.layouts.Bayer_CropScience.Scope.Country_United_States_Internet.RewardsCatalog.SearchByItemNumber" %>
<div class="form search-item">
<div class="clearfix">
<h3>
<label class="searchByItemNumber" for="item-num">Know your item number?</label></h3>
<div class="input-wrapper search-by-itemnumber-length">
<asp:TextBox runat="server" ID="txtSearchItemNumber" CssClass="search-by-itemnumber-length" placeholder="Search by Item Number" />
<asp:RequiredFieldValidator runat="server" ID="rfvSearchItemNumber" ControlToValidate="txtSearchItemNumber" ValidationGroup="searchCatalog" ErrorMessage="Please fill out this field." CssClass="error"></asp:RequiredFieldValidator>
</div>
<asp:Button runat="server" Text="Go" CssClass="small" OnClick="Search" ValidationGroup="searchCatalog" />
</div>
</div>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SearchByDescription.ascx.cs" Inherits="Bayer.CropScience.SC.Internet.US.Website.layouts.Bayer_CropScience.Scope.Country_United_States_Internet.RewardsCatalog.SearchByDescription" %>
<div class="form search-item">
<div class="clearfix">
<h3>
<label class="searchByKeywords" for="item-keywords">Search by keywords</label></h3>
<div class="input-wrapper search-by-keywords">
<asp:TextBox runat="server" ID="txtSearchKeyword" CssClass="search-by-keywords" placeholder="Search by keywords" />
<asp:RequiredFieldValidator runat="server" ID="rfvSearchKeyword" ControlToValidate="txtSearchKeyword" ValidationGroup="searchCatalogKeywords" ErrorMessage="Please fill out this field." CssClass="error"></asp:RequiredFieldValidator>
</div>
<asp:Button runat="server" Text="Go" CssClass="small" OnClick="KeywordSearch" ValidationGroup="searchCatalogKeywords" />
</div>
</div>
问题是,当我填写项目编号并单击“开始”时,我在关键字框下收到验证错误消息 "Please fill out this field",反之亦然。我该如何阻止这种情况发生?
编辑 - 当我按下 "enter" 而不是当我点击 "Go" 按钮时出现验证错误
编辑 2 - 这是一个 javascript 问题,按回车键导致两个字段都有效。我用自定义 onkeypress 函数覆盖了它
您需要有不同的 ValidationGroups。您在所有字段上都使用了 ValidationGroup="searchCatalog"
。
将 Unique ValidationGroup 分配给要一起验证的字段。
我有一个页面有两个单独的搜索表单,一个用于按项目 ID 搜索,一个用于按关键字搜索。它看起来像这样:
我从最上面的开始,我现在添加最下面的。底部的基本上是第一个的复制和粘贴(两者都是 Sitecore 中的组件)。这是每个的代码:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SearchByItemNumber.ascx.cs" Inherits="Bayer.CropScience.SC.Internet.US.Website.layouts.Bayer_CropScience.Scope.Country_United_States_Internet.RewardsCatalog.SearchByItemNumber" %>
<div class="form search-item">
<div class="clearfix">
<h3>
<label class="searchByItemNumber" for="item-num">Know your item number?</label></h3>
<div class="input-wrapper search-by-itemnumber-length">
<asp:TextBox runat="server" ID="txtSearchItemNumber" CssClass="search-by-itemnumber-length" placeholder="Search by Item Number" />
<asp:RequiredFieldValidator runat="server" ID="rfvSearchItemNumber" ControlToValidate="txtSearchItemNumber" ValidationGroup="searchCatalog" ErrorMessage="Please fill out this field." CssClass="error"></asp:RequiredFieldValidator>
</div>
<asp:Button runat="server" Text="Go" CssClass="small" OnClick="Search" ValidationGroup="searchCatalog" />
</div>
</div>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SearchByDescription.ascx.cs" Inherits="Bayer.CropScience.SC.Internet.US.Website.layouts.Bayer_CropScience.Scope.Country_United_States_Internet.RewardsCatalog.SearchByDescription" %>
<div class="form search-item">
<div class="clearfix">
<h3>
<label class="searchByKeywords" for="item-keywords">Search by keywords</label></h3>
<div class="input-wrapper search-by-keywords">
<asp:TextBox runat="server" ID="txtSearchKeyword" CssClass="search-by-keywords" placeholder="Search by keywords" />
<asp:RequiredFieldValidator runat="server" ID="rfvSearchKeyword" ControlToValidate="txtSearchKeyword" ValidationGroup="searchCatalogKeywords" ErrorMessage="Please fill out this field." CssClass="error"></asp:RequiredFieldValidator>
</div>
<asp:Button runat="server" Text="Go" CssClass="small" OnClick="KeywordSearch" ValidationGroup="searchCatalogKeywords" />
</div>
</div>
问题是,当我填写项目编号并单击“开始”时,我在关键字框下收到验证错误消息 "Please fill out this field",反之亦然。我该如何阻止这种情况发生?
编辑 - 当我按下 "enter" 而不是当我点击 "Go" 按钮时出现验证错误
编辑 2 - 这是一个 javascript 问题,按回车键导致两个字段都有效。我用自定义 onkeypress 函数覆盖了它
您需要有不同的 ValidationGroups。您在所有字段上都使用了 ValidationGroup="searchCatalog"
。
将 Unique ValidationGroup 分配给要一起验证的字段。