2015-03-27 2 views
1


Моя проблема кажется очень странной, но я не нахожу правильное решение.
В моем приложении у меня есть текстовые поля asp, а также обязательные поля. Наряду с этим у меня есть кнопка.
Мое намерение - выполнить проверку страницы перед отправкой формы. Но когда я нажимаю на кнопку, требуемый идентификатор не показывает никаких ошибок. Вместо этого страница отправляется на сервер.
Ниже мой ASPX страница код:
Обязательный полевой валидатор не работает до обратной передачи

<asp:TextBox runat="server" ID="txtPhysicalTherapyTherapist1" CssClass="txt-field"></asp:TextBox> 
<asp:RequiredFieldValidator ID="RequiredFieldValidator19" runat="server" ControlToValidate="txtPhysicalTherapyTherapist1" 
ErrorMessage="this is required" ForeColor="Red" 
ValidationGroup="PhysTherapyAdd" Display="Dynamic" SetFocusOnError="True"></asp:RequiredFieldValidator> 

<asp:TextBox runat="server" ID="txtPhysicalTherapyFrequency1" CssClass="txt-field"></asp:TextBox> 
<asp:RequiredFieldValidator ID="RequiredFieldValidator18" runat="server" ControlToValidate="txtPhysicalTherapyFrequency1" 
ErrorMessage="Frequency is required" ForeColor="Red" 
ValidationGroup="PhysTherapyAdd" Display="Dynamic" SetFocusOnError="True"></asp:RequiredFieldValidator> 

<asp:Button ValidationGroup="PhysTherapyAdd" ID="btn_physicaltherapy" 
runat="server" Style="width: 80px;" CssClass="tabs" CausesValidation="false" Text="Save" 
OnClick="btn_physicaltherapy_Click" /> 

Я поставил местный JavaScript следующим образом:

function validatePage() { 
    if (Page_ClientValidate()) { 
    alert("Valid Page"); 
    return true; 
    } 
    else { 
    alert("Not a valid Page"); 
    return false; 
    } 
} 


Но когда я нажимаю на кнопку держать мои текстовые поля пустыми, это представление форма для сервера.

Пожалуйста, предоставьте мне правильное решение.

+0

откуда вы пытаетесь вызвать функцию validatePage()? –

+0

Вам необходимо установить для свойства CauseValidation значение true на кнопку отправки, это будет означать, что страница должна быть проверена перед отправкой на сервер. – Bayeni

+0

Даже если я вернул CauseValidation в True, он не работает ... и я вызываю функцию OnClientClick функции validatePage(). Но нет ИСПОЛЬЗОВАНИЯ. –

ответ

2

У вас кнопка CausesValidation="false" это предотвратит любую валидацию формы. Попробуйте установить его на CausesValidation="true"

Или вы можете просто удалить его вообще, так как оно должно быть по умолчанию равно true.

Вообще говоря, вы должны установить только это ложь, если ваш не пытается представить свою страницу, например, если у вас есть Save функцию, которая будет сохранять частично заполненную форму, или если вы используете <asp:UpdatePanel> для извлечения данных в асинхронном режиме

+1

Это предложение было предложено по комментариям, 5 мин. Назад :) – Bayeni

+0

Правда, но я начал печатать до того, как увидел его –

+2

@Bayeni - Вы могли бы опубликовать это как ответ в этом случае;) –

1

Пусть следующие 2 подхода:

Первый подход: Использование JavaScript для запуска проверки, следующий код работы

<asp:Button ValidationGroup="PhysTherapyAdd" ID="btn_physicaltherapy" 
runat="server" Style="width: 80px;" CssClass="tabs" CausesValidation="false" Text="Save" OnClick="btn_physicaltherapy_Click" OnClientClick="if (validatePage() == false) return(false);"/> 

Второй подход: используя код позади, на мероприятии btn_physicaltherapy_Click поставил следующие перед обработкой данных

Page.Validate("PhysTherapyAdd"); 
if(!Page.IsValid) return; 
Смежные вопросы