Единственный верный способ - использовать интервал.
Ответ Луки слишком сложный для меня, поэтому я создал свою короткую версию, которая, надеюсь, поможет кому-то (может быть, даже мне из будущего):
$input.on( 'focus', function(){
var intervalDuration = 1000, // ms
interval = setInterval( function(){
// do your tests here
// ..................
// when element loses focus, we stop checking:
if( ! $input.is( ':focus' ) ) clearInterval( interval );
}, intervalDuration );
} );
Проверено на Chrome, Mozilla и даже на IE.
Я думаю, что когда у вас есть Enable = false, вы не увидите подчеркивания, но вы можете достичь этого, как показано ниже, и не показывать расширенные свойства, чтобы увидеть эти свойства.
<px:PXTextEdit runat="server" DataField="STPBatch" ID="STPBatchEdit" Enabled="False">
<LinkCommand Command="viewBatch" Target="ds"></LinkCommand>
<Border>
<Bottom Color="#D2D4D7" Style="Solid" Width="1px" /></Border>
</px:PXTextEdit>
Если у вас есть доступ к каталогу \App_Themes\Default
на машине веб-сервера, вы можете изменить стиль для всех отключенных ссылок.
Отсутствие подчеркивания происходит из-за этого стиля в \App_Themes\Default\00_Controls.css
:
a.Disabled {
text-decoration: none;
}
Подчеркивание - это оформление текста, и этот стиль удаляет его из-за недоступной ссылки. Это намеренный выбор дизайна, и вы можете закомментировать этот стиль, чтобы подчеркнуть подчеркивание отключенных элементов управления редактора ссылок:
a.Disabled {
/*text-decoration: none;*/
}
При использовании стиля по умолчанию отключенный элемент управления редактора ссылок не имеет оформления текста:
При комментировании стиля отключенный элемент управления редактора ссылок имеет оформление текста по умолчанию: