powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / CustomValidator ??????????
21 сообщений из 21, страница 1 из 1
CustomValidator ??????????
    #32576899
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего-то я не понимаю. Друзья, помогите разобраться.

Есть форма на ней: textbox, button(submit) и пара валидаторов.
Проблема: при нажатии Enter, срабатывают валидаторы, но событие button_onclick - не происходит !!
вот пример из msdn:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
	<HEAD>
		<script language="C#" runat="server">

        void ValidateBtn_OnClick(object sender, EventArgs e) {

            if (Page.IsValid) {
               lblOutput.Text = "Page is valid! " + DateTime.Now;
            }
            else {
               lblOutput.Text = "Page is not valid!  " + DateTime.Now;
            }
        }

        void ServerValidate (object source, ServerValidateEventArgs value) {

            // even number?
            try {
               int num = Int32.Parse(value.Value);
               if (num% 2  ==  0 ) {
                   value.IsValid = true;
                   return;
                   
               }
            }
            catch (Exception) {}

            value.IsValid = false;
        }

		</script>
	</HEAD>
	<body>

		<h3><font face="Verdana">CustomValidator Example</font></h3>

		<form runat="server" ID="Form1">

			<asp:Label id="lblOutput" runat="server"
				Text="Enter an even number:" 
				Font-Name="Verdana" Font-Size="10pt" /><br>


			<asp:TextBox id="Text1" runat="server" />
			<br>

			<asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" 
				ControlToValidate="Text1" ErrorMessage="Please enter a number" 
				Display="Dynamic" Font-Name="verdana" Font-Size="10pt">
			</asp:RequiredFieldValidator>
			<br>
			<asp:CustomValidator id="CustomValidator1" runat="server" 
				ControlToValidate="Text1" ClientValidationFunction="ClientValidate" 
				OnServerValidate="ServerValidate" Display="Static" 
				Font-Name="verdana" Font-Size="10pt">
           			Not an even number!
	    		</asp:CustomValidator>

			<br>
			<asp:Button text="Validate" onclick="ValidateBtn_OnClick" runat="server" ID="Button1" />

			<script language="javascript">

       function ClientValidate(source, arguments)
       {
          // even number?
          if (arguments.Value% 2  ==  0 )
            arguments.IsValid = true;
          else
            arguments.IsValid = false;
       }
			</script>

		</form>


	</body>
</HTML>
Что не так??
---------------
пока я решил вопрос добавлением в ServerValidate вызова ValidateBtn_OnClick при удачной проверке. но меня терзают сомнения
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32577073
Kilroy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onclick - атрибут элементов HTML, в частности INPUT'a

а твоя проблема должна решиться переименованием
Код: plaintext
1.
void ValidateBtn_OnClick(object sender, EventArgs e)

в

Код: plaintext
1.
void Button1_OnClick(object sender, EventArgs e)
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32577090
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я, наверное, не очень корректно выразился.
пример из мсдн я привел чтобы проблему можно было "руками пощупать"

еще раз повторюсь, применительно к данному примеру:
Есть форма на ней: textbox, button(submit) и пара валидаторов.
Проблема: при нажатии Enter, срабатывают валидаторы, но событие ValidateBtn_OnClick- не происходит!!
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32577115
Kilroy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да забыл добавить

переименуй еще
Код: plaintext
1.
<asp:Button text="Validate" onclick="ValidateBtn_OnClick" runat="server" ID="Button1" />

в

Код: plaintext
1.
2.
 
<asp:Button text="Validate" onclick="Button1_OnClick" runat="server" ID="Button1" />

не работал пример потому, что связывание серверных обработчиков
в событиями присходит по атрибуту ID
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32577123
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос остается открытым
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32577128
Kilroy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда...

Все прекрасно работает. Только серверный обработчик
вызывается только, когда клиентская валидация проходит успешно,
но это правильно.
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32577171
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чего правильно??
- пользователь вводит данные в текстбокс
- нажимает Enter
и что происходит? если проверка прошла успешно, как мне кажется должна сработать процедура, описанная в ValidateBtn_OnClick. (т.к. кнопка submit)
Этого не происходит.
Как грамотно замутить, что бы происходило?
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32577255
Kilroy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чего непонятно то???????????

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

Если хочешь, чтобы серверный метод вызывался всегда, отключи
клиентскую часть валидатора
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32577308
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторсработал клиентский скрипт,
Да, его проделки.
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32577414
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KilroyВвел четное клиентский скрипт дал добро, запрос ушел на сервер
и вызвался метод-обработчик нажатия на кнопку.
ЭТОГО НЕ ПРОИСХОДИТ!!!!!!! (при нажатии Enter)
Я спецально добавил текущую дату в отклик, что бы было видно, что нажатие кнопки не обрабатывается.

Возможно так и должно быть, если это обычная кнопка. Но если у нее type=submit, то, по логике, после успешной проверки данных должен отрабатывать обработчик нажатия кнопки submit .

Вопрос: Как грамотно реализовать описаное мною ожидаемое поведение, при нажатии кнопки Enter??

---
пока я решил вопрос добавлением в ServerValidate вызова ValidateBtn_OnClick при удачной проверке
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32578429
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты не забыл на свою кнопку фокус навести?
Например так:
Page.RegisterStartupScript("focus", "<script>document.all." + Button1.ClientID + ".focus();</script>")


Max Pro
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32579818
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2MaxPro
фокус тут не причем, т.к. кнопка сабмит и, соответственно, при нажатии на Enter происходит отправка данных на сервер

2All
разве ни кто не встречался с данной проблемой?
или лень разбираться?
или я вообще гоню?
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32579839
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я ничего не понимаю в колбасных обрезках, но думаю вот что:
1. Какой-такой сабмит-мабит? Странно, что-то. Лучше выбрось его из головы.
2. Наведи фокус и всё заработает.
3. Если после наведения фокуса не заработает - сообщи - продолжим разговор.

Max Pro
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32579851
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2MaxPro
Я просил грамотное решение. Кустарным способом я вопрос и так решил (добавлением в ServerValidate вызова ValidateBtn_OnClick при удачной проверке).
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32580021
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Грамотное? Это надо быть докой.
Вот что я думаю:
Есть маленький вопрос: срабатывает ли что ты хотел при нажатии на кнопку мышью?
В зависимости от этого рассуждаем логически:
1 вариант. Нет, даже и мышь не помогает. В этом случае думаю, что у тебя неверный способ использования события on_click. Думаю, что в HTML-webform использовать on_click можно только для клиентской части кода, написанного на JAvaScript. Как вставить функцию на скрипте ты сам меня учил. Проще всего засунуть её между Head /Head. Чтобы использовать серверный код (C#), слово on_click в HTML-webform вообще вставлять нельзя, так как тут уже не on_click, а простой click. При этом событие click сработает при указании в коде твоего C# строки:
void Button1_Click(object sender, EventArgs e)
При этом нельзя менять название Button1 на какое-то другое.
Что касается MSDN, то там полно ошибок.
2 вариант. Да, мышью помогло, однако ENTER неработает. В этом случае ты меня извини конечно за назойливость, но ты сам понимаешь, что почему-то у тебя твоя кнопка превратилась из "сабмита" в "антисабмит" и потеряла фокус.
Со всеми вытекающими последствиями.
С уважением,
Max Pro
P.S. Мне начинает казаться, что ты пытался написать на C# не серверный, а клиентский код. Не знаю, возможно ли это. Да, on_click в отличие от click действительно клиентское событие. Судя по вырезке из MSDN действительно выходит что такое возможно, но мне что-то с трудом верится. Но если у тебя 2-й вариант, то действительно такое возможно. В этом случае что тебе сказать ещё кроме фокуса? Ну может недоработка Микрософта какая-то.
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32580398
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Max ProГрамотное? Это надо быть докой.Я и пытаюсь добится от них ответа
срабатывает ли что ты хотел при нажатии на кнопку мышью?
...
тебя твоя кнопка превратилась из "сабмита" в "антисабмит" и потеряла фокус.
Со всеми вытекающими последствиями.
Если бы не срабатывало, вопрос бы не возник. Фокус совсем не причем. Код нормальный, рабочий, но присутствует баг.

Я думал, кто-нибудь с такой проблемой сталкивался, либо у меня какое-то не правельное понимание самого процесса отправки данных на сервер и их обработки

Что касается MSDN, то там полно ошибок.не припоминаю, что встречал
Мне начинает казаться, что ты пытался написать на C# не серверный, а клиентский код.
Код: plaintext
<script language="C#" runat="server">

зы. Вопрос можно закрыть. Я примерно понимаю куда копать, да времени особо нет, да вобщем-то и код работает ;-)
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32580840
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну мне всё-таки любопытно: если код серверный, то почему On_Click вместо Click? Смею предположить, что ты таким образом заставляешь сервер генерить JavaScript и вешать его на кнопку, так как событие On_Click в отличии от Click как ни крути клиентское.
Если так, то ошибка Микрософта заключается в том, что (если только фокус не причём):
1. Событие "Enter кнопку" и "Нажать мышью кнопку" не является одним и тем же. И обрабатываются они по-разному.
2. Событие "Enter кнопку" Микрософт неверно прописал, забыв добавить туда сгенерированную из твоего C# в JavaScript процедуру.
Выход из этого прост - замени C# на JavaScript.
С уважением,
Max Pro
P.S. А не смотришь ли ты MSDN вместо .NET 1.1 новую версию 2.0
Или соответственно вместо 1.0 - 1.1?
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #32581922
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Max Pro...так как событие On_Click в отличии от Click как ни крути клиентское. Какое клиентское событие у серверного контрола??? Ты о чем???
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
CustomValidator ??????????
    #33422659
Вопросник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да все очень просто, ребята! Сам тока на этом позамарачивался!
У контрола <asp:RequiredFieldValidator убери свойство Display вообще!
По умолчанию оно static, или поставь "Static" руками.

Уф, заморочка от Microsoft
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #33422863
Фотография Sam Andrews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и что, заработает?

на самом деле возможна другая заморочка: когда только один текст-бокс и кнопка, при сабмите по энтеру обработчик кнопки не вызывается, если больше одного - все ок (фишка IE, в той же птице, например, все нормально)

кстати, вроде недавно кто-то сталкивался с похожей проблемой...

с уважением...
...
Рейтинг: 0 / 0
CustomValidator ??????????
    #33423056
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.sql.ru/forum/actualthread.aspx?tid=240462
да, возможно корень у проблемы один...


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / CustomValidator ??????????
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]