# Справді чудовий метод перехрестя для виконання " Типові кнопки " - так, що, коли ви натиснете Enter, правильна кнопка " клікне "

<datetime class="hidden">2004-03-24T00:00</datetime>

<!-- category -- mostlylucidcouk, Imported, ASP.NET, JavaScript, UI Automation, Event Handling -->
Це одна з головних проблем інтерфейсу користувача, яка, по суті, викликана правилом " однієї форми" ASP.NET, як [ДарреллCity in Manitoba Canada](http://dotnetjunkies.com/WebLog/darrell.norton/) вказує на те, що існує багато розв'язків, але жоден з них насправді не розв'яже всієї проблеми (тобто, для всіх браузерів), що ж, тепер є чудове рішення - з [Блог Даррела Нортона](http://dotnetjunkies.com/WebLog/darrell.norton/) ([посилання](http://dotnetjunkies.com/WebLog/darrell.norton/archive/2004/03/03/8374.aspx): (репродукція тут, тому що я ніколи більше не знайду її...)

> ## [*Надсилання типових кнопок після натискання користувачем клавіші Enter - нарешті!*](http://dotnetjunkies.com/WebLog/darrell.norton/archive/2004/03/03/8374.aspx)
> 
> *Однією з найскладніших речей у веб-розробці є отримання певної кнопки для надсилання, якщо на сторінці є декілька кнопок.* [*Metabuilders*](http://www.metabuilders.com/) *Знаменита, має таку, яка працює на браузерів пізньої моделі.*
> 
> *Через суворі вимоги клієнтів до публічного сайту, мені потрібно було щось, що йшло далі в історії браузера.* [*Janus Kamp Hansen*](http://www.kamp-hansen.dk/pages/showdoc.asp?id=28&menuid=21&menuid=18) *Это сработало только на IE.*
> 
> *Я продовжив роботу з Mozilla і Netscape 6+, потім додав ще коду, щоб змусити його працювати з більшості переглядачів Netscape 4+4. Потім я підлаштував продуктивність трохи, і це робить це! Швидкий, простий до використання фрагмент коду для примусового запуску специфічних кнопок надсилання з визначених розробниками текстових скриньок.*
> 
> *Спочатку скопіюйте цей метод до легкодоступного місця:*
> 
> *публічна void Set DefaultPage page, TextBox textControl, button defaultButton)*
> 
> *{*
> 
>       *// Sets default buttons.*
>     
>       *// Originally created by Janus Kamp Hansen - http://www.kamp-hansen.dk*
>     
>       *// Extended by Darrell Norton - http://dotnetjunkies.com/weblog/darrell.norton/* 
>     
>       *//   -- added Mozilla support, fixed a few issues, improved performance*
>     
>       *string theScript = @"*
> 
> *&lt;Мова SCRIPT=" "javascript"&gt;*
> 
> *funTrapKD=btn, подія) {*
> 
> *if (документ.all) {*
> 
> *if (Event.keyCode == 13) {*
> 
> *подія. returnValue=false;*
> 
> *accance. cancel = true;*
> 
> *btn. flick=);*
> 
> *}*
> 
> *}*
> 
> *else if ( document. getElmementById){*
> 
> *if (Event. who = 13) {*
> 
> *подія. returnValue=false;*
> 
> *accance. cancel = true;*
> 
> *btn. flick=);*
> 
> *}*
> 
> *}*
> 
> *else if}ud. memors) {*
> 
> *if'event. who = 13) {*
> 
> *подія. returnValue=false;*
> 
> *accance. cancel = true;*
> 
> *btn. flick=);*
> 
> *}*
> 
> *}*
> 
> *}*
> 
> *&lt;/ SCRIPT&gt;";*
> 
>       *Page.RegisterStartupScript("ForceDefaultToScript", theScript);*
>     
>       *textControl.Attributes.Add("onkeydown", "fnTrapKD(" + defaultButton.ClientID + ",event)");*
> 
> *}*
> 
> *Цей код реєструє даний скрипт за допомогою сторінки. Потім він додає атрибут до текстової скриньки, яка у цьому випадку є подією надKeyDown, яка викликає функцію fnTrapKD за допомогою кнопки ep clientID (це додає HTML ІД у відтвореному HTML) і подією. Я повинен був передати цю подію через те, що навігатори Netscape/ Mozilla можуть спіймати цю подію, якщо ви не передаєте її функції. IE може отримати доступ до події з об' єкта документа, але ми хочемо, щоб вона була сумісною з чимось приємним і перехідним.*
> 
> *Документ. all, якщо команда покриває IE. Документ. get ElectomById охоплює переглядачі Netscape 6+ і Mozilla. Документ. layers, якщо команда працює з Netscape 4+.*
> 
> *Тепер додайте рядок коду, який з' єднує всі текстові поля, які ви бажаєте бачити за допомогою певної кнопки надсилання. Наприклад:*
> 
>       *SetDefaultButton(this, TextBox1, Button1);*
>     
>       *SetDefaultButton(this, TextBox2, Button2);*
>     
>       *SetDefaultButton(this, TextBox3, Button3);*
> 
> *Зазвичай я записую це на сторінці\_ Load, оскільки метод Page. ReegisterStartupScript ігноруватиме дублікати скриптів. Тепер вам просто слід викликати пункт Встановити Неявну кнопку для кожної з асоціацій кнопок textbox- submit.*
> 
> *І якщо взяти до уваги кількість Netscape 4 версій (і їх недоліки), то вона, ймовірно, працює над усіма ними, але вона працює (на даний час).*