Установка кнопки по умолчанию в asp.net 2.0

У меня есть сторонний пользовательский элемент управления (элемент управления капчей), в котором есть изображение капчи и текстовое поле.

Я использую вышеуказанный пользовательский элемент управления на своей веб-странице. У меня есть 3 кнопки отправки на моей веб-странице (проверить капчу, отправить страницу, добавить пользователя). Когда я нажимаю кнопку «Подтвердить ввод капчи» с помощью мыши, я проверяю, пуста ли капча, и показываю предупреждение javascript.

Проблема возникает, когда я ввожу правильный текст капчи в текстовое поле и нажимаю клавишу ввода, когда курсор находится в текстовом поле. Страница просто обновляется. Я не могу добавить событие нажатия клавиши в текстовое поле и вызвать событие кнопки «Проверить капчу», поскольку я использую сторонний пользовательский элемент управления, который я не могу изменить.

Кроме того, Page.ClientScript.RegisterHiddenField(...) не будет работать в моем случае, поскольку у меня есть две другие кнопки отправки на одной странице.

Единственный оставшийся вариант — заключить их в панели и установить кнопку по умолчанию.

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


person utkarsh    schedule 28.07.2009    source источник


Ответы (2)


Привет! Я тоже использую много сторонних элементов управления. Что нужно помнить об этих элементах управления, так это то, что в конце концов они просто создают HTML. Это означает, что вы можете использовать DOM для доступа и присоединения обработчиков событий, таких как onKeyPress. Хитрость заключается в том, чтобы определить, как ваш создатель элемента управления назвал элемент управления, который вы ищете, в данном случае {текстовое поле}. Самый простой способ добиться этого — просто запустить страницу и просмотреть исходный код страницы. Именно там вы можете найти имя, поскольку оно отображается и отправляется в браузер, после чего все, что вам нужно сделать, это использовать document.getElementByID для получения объекта и настройки вашего обработчика.

Пример: < бр/>

<script> 
     //Place this AFTER your textbox control is declared in the HTML
     //Get the textbox
     var textbox = document.getElementById('nameOfRenderedControlHere');
     //Assign the event handler and function you want it to call
     textbox.onclick = function() { validateCaptcha(); };

     function validateCaptcha()
     { //Do your Stuff here  }
</script>

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

person Community    schedule 30.07.2009

Поместите капчу в свой собственный <asp:Panel> и добавьте свойство DefaultButton для панели с идентификатором кнопки отправки капчи.

person Jason    schedule 30.07.2009