2015-01-13 3 views
0

У меня есть 2 текстовые поля даты с валидатором диапазона сравнения. Когда я выбираю неправильные даты, я получаю красный флаг, как ожидаемый от валидатора, но текстовые поля даты не сбрасываются в пустые строки с помощью кнопки кнопки очистки после предупреждения красного флага. Он не попадает в точку разрыва в Clear_Click, если есть красный флаг. Пожалуйста помоги.Очистка полей после ошибки проверки

код ASPX:

<asp:TextBox ID="FromDate" runat="server" /> 
<asp:TextBox ID="ToDate" runat="server" /> 
<asp:CompareValidator ID="DateCompareValidator" ControlToCompare="FromDate" 
    ControlToValidate="ToDate" Type="Date" Operator="GreaterThanEqual" ErrorMessage="*Invalid date range - Please check" 
    runat="server"></asp:CompareValidator> 

<asp:Button ID="ClearButton" Text="Clear" runat="server" OnClick="Clear_Click"/> 

CodeBehind .cs:

protected void Clear_Click(object sender, EventArgs e) 
{ 
    FromDate.Text = String.Empty; 
    ToDate.Text = String.Empty; 
} 
+0

Это кнопка очистки, кнопка очистки очистит все поля, включая поля даты. Я не сбрасываю его, только потому, что он был введен неверно, только когда кто-то хочет начать с формы и очистить все поля, и если произойдет ошибка проверки, это не будет для кода, стоящего за clear_click – Namekal

+0

Извините, я неправильно понял ваш вопрос. Возможно, вы должны были исключить часть проверки. Это не очень актуально. Вы хотите очистить поля, даже если не было ошибки проверки. –

ответ

1

Если вы хотите, чтобы очистить TextBox, я бы не сделать постбэк к серверу. Я бы использовал простой JavaScript с jQuery или без него. Например:

<asp:TextBox ID="FromDate" runat="server" /> 
<asp:TextBox ID="ToDate" runat="server" /> 
<asp:CompareValidator ID="DateCompareValidator" ControlToCompare="FromDate" 
    ControlToValidate="ToDate" Type="Date" Operator="GreaterThanEqual" ErrorMessage="*Invalid date range - Please check" 
    runat="server"></asp:CompareValidator> 

<input type="button" id="clearButton" value="Clear" /> 

<script> 
$(function() { 
$("#clearButton").click(function() { 
    $("#<%= FromDate.ClientID %>").val(""); 
    $("#<%= ToDate.ClientID %>").val(""); 
}); 
}); 
</script> 

Вот очень небольшой пример (без элементов управления ASP.NET):

$(function() { 
 
$("#clearButton").click(function(e) { 
 
    e.preventDefault(); 
 
    $("#FromDate").val(""); 
 
    $("#ToDate").val(""); 
 
}); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input ID="FromDate" type="text" /> 
 
<input ID="ToDate" type="text" /> 
 

 
<input type="button" id="clearButton" value="Clear" />

EDIT:

  1. Если нажать кнопки, делает Clear_Click действительно получают ель ред?
  2. В моем тесте каждый мозговым работает идеально, посмотрите на следующий пример: ASPX:

     <asp:Button ID="ClearButton" Text="Clear" runat="server" OnClick="Clear_Click" /> 
        </div> 
    </form> 
    

C#:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace ButtonTest2 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     protected void Clear_Click(object sender, EventArgs e) 
     { 
      FromDate.Text = String.Empty; 
      ToDate.Text = String.Empty; 
     } 
    } 
} 

ли вы код похож на мой?

+0

Спасибо BendEg, я пробовал это, но это не сработало. Есть ли способ сделать это от codebehind? – Namekal

+0

@Namekal, пожалуйста, сравните свой код с моим кодом, надеюсь, он поможет :) – BendEg

Смежные вопросы