Це одна з головних проблем інтерфейсу користувача, яка, по суті, викликана правилом " однієї форми" ASP.NET, як ДарреллCity in Manitoba Canada вказує на те, що існує багато розв'язків, але жоден з них насправді не розв'яже всієї проблеми (тобто, для всіх браузерів), що ж, тепер є чудове рішення - з Блог Даррела Нортона (посилання: (репродукція тут, тому що я ніколи більше не знайду її...)
Надсилання типових кнопок після натискання користувачем клавіші Enter - нарешті!
Однією з найскладніших речей у веб-розробці є отримання певної кнопки для надсилання, якщо на сторінці є декілька кнопок. Metabuilders Знаменита, має таку, яка працює на браузерів пізньої моделі.
Через суворі вимоги клієнтів до публічного сайту, мені потрібно було щось, що йшло далі в історії браузера. Janus Kamp Hansen Это сработало только на 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 = @"*<Мова SCRIPT=" "javascript">
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=);
}
}
}
</ SCRIPT>";
*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 версій (і їх недоліки), то вона, ймовірно, працює над усіма ними, але вона працює (на даний час).
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.