var today = DateTime.Today;
var month = new DateTime(today.Year, today.Month, 1);
var first = month.AddMonths(-1);
var last = month.AddDays(-1);
Встраивают их, если Вам действительно нужны одна или две строки.
Раньше я тоже сталкивался с такой ситуацией и этим занимаюсь.
$('html').click(function() {
hasFocus = 0;
hideResults();
});
и в поле ввода я сделаю это
$('input').click()
{
event.stopPropagation();
}
Таким образом, это закроет раскрывающийся список, если щелкнуть где-нибудь за пределами div (даже полосы прокрутки). Но я подумал, может ли кто-нибудь предложить более логичное решение.
Не могли бы вы настроить событие размытия на срабатывание и для выпадающего div? Таким образом, когда вход или раскрывающийся список теряет фокус, он исчезнет ...
Мне любопытно ...
Вы используете последнюю версию каждого браузера, почему бы вам не попробовать ее в Chrome 4.0.202?
Что ж, у меня была та же проблема с моим выпадающим списком. Я спросил разработчиков Chrome по поводу этой проблемы, они сказали, что это ошибка , которая не будет исправлена в ближайшем будущем, потому что «многие люди не сообщали о ней, и исправление нетривиально» . Так что давайте' Посмотрим правде в глаза: эта ошибка останется как минимум еще на год.
Однако для этого конкретного случая (раскрывающийся список) есть обходной путь. Уловка заключается в следующем: когда один щелчок по полосе прокрутки, событие «мышь вниз» приходит к элементу-владельцу этой полосы прокрутки. Мы можем использовать этот факт, чтобы установить флаг и проверить его в обработчике onblur. Вот объяснение:
<input id="search_ctrl">
<div id="dropdown_wrap" style="overflow:auto;max-height:30px">
<div id="dropdown_rows">
<span>row 1</span>
<span>row 2</span>
<span>row 2</span>
</div>
</div>
div "dropdown_wrap" получит вертикальную полосу прокрутки, поскольку его содержимое не соответствует фиксированной высоте. Как только мы получим щелчок, мы почти уверены, что была нажата полоса прокрутки и фокус будет снят. Теперь немного кода, как с этим справиться:
search_ctrl.onfocus = function() {
search_has_focus = true
}
search_ctrl.onblur = function() {
search_has_focus = false
if (!keep_focus) {
// hide dropdown
} else {
keep_focus = false;
search_ctrl.focus();
}
}
dropdow_wrap.onclick = function() {
if (isChrome()) {
keep_focus = search_has_focus;
}
}
Вот и все. Нам не нужны хаки для FF, поэтому есть проверка для браузера. В Chrome мы обнаруживаем щелчок по полосе прокрутки, позволяем размывать фокус, не закрывая список, а затем немедленно восстанавливаем фокус обратно для управления вводом. Конечно, если у нас есть логика для "search_ctrl.onfocus", ее тоже следует изменить. Обратите внимание, что нам нужно проверить, был ли фокус у search_ctrl, чтобы предотвратить проблемы с двойным щелчком.
Вы можете догадаться, что лучше было бы отменить событие onblur, но это не сработает в Chrome. Не уверен, является ли это ошибкой или функцией.
PS "dropdown_wrap" не должен иметь отступов или границ, иначе пользователь может щелкнуть в этих областях, и мы будем рассматривать это как щелчок полосы прокрутки.
Вместо того, чтобы обнаружить размытие, обнаружить документ. Те или щелкните окна и вытащите кнопку мыши. Определите, стоит ли эта точка мыши вне поля меню. Presto, вы обнаружили, когда они нажали за рамки!