😂 Все равно его не брошу - потому что он хороший!
А на Гугле лень почитать?
Улыбнул! :)
ключевое слово - теоретически, практически вообще ни одно правило не обрабатыватся.
:) ежу другое не понятно? На чем экономим? на одном случайном запросе?
1. Т.е. если пользователь не ввел урл - то это отсекается в функции проверки? т.е.
if( .value) { только тогда и проверяем }
2. если он кликнул на любую ссылку кроме нужной - проверка так и так должна быть.
3. Если сразу кликнул на ссылку - то можно ввести нужный урл и заблокировать поле...
4. (и последний) если ввел урл или огрызок от него и кликнул на нужную ссылку - то осуществиться проверка этого огрызка (по onBlur), а потом подставится нужная ссылка.
получается что по ТЗ нужна защита только от случая 4. Но это в любом случае - максимум лишний запрос - в чем проблема то?
Если проблема все же есть - еще раз повторю - кури про перехват событий.
Как то так:
Сначала добавить поле соответствующее:
ALTER TABLE history ADD id_client SMALLINT( 5 ) UNSIGNED DEFAULT '0' NOT NULL AFTER id_servises ;
(не забыть что выделенное красным должно соответствовать ID из клиентов)
А потом данные перегнать:
INSERT INTO history(id_client) SELECT clients.id FROM clients,cars,history WHERE cars.id_car=history.id_car AND clients.id=cars.id_client;
вроде не напутал, так что должно получиться
Только ЗАЧЕМ это делать если в указанном варианте таблицы достаточно грамотно реализованы и выборки из них не представляют никакой проблемы (как собственно говоря на указанном примере с добавлением)???? Вы просто будете нелепо дублировать информацию.
ну что "ввести" уже не важно - главное чтобы это был идентификатор потери фокуса именно нужным объектом, если не поймать это в нужный момент - то как потом узнать что фокус был именно на нем?
Потом если включить логику - то идея такая - если инпут получил фокус, значит на него кликнули мышом, значит мышь был на нем, значит на onMouseOut можно включить перехват captureEvents для этого инпута.
Т.е. если мышь пополз в сторону (кликать на ссылку) - мы уже ждем совершения блюра... Если он свершился одновременно с кликом на нужную ссылку - "велкам ту праздник жизни"
Правда это не решает проблемы если юзер табом ходит по форме, но таких мало, и можно отменить для инпута переход по табу.
Включаем перехват события onBlur - и вместо того чтобы оно сразу срабатывало - проверяем что юзер сделал после этого блюра. Т.е. если пошел по ссылкам - бог с ним, если клинкул на что-то нужное - включаем обработку onBlur-а.
Или я не понял?
он физически не может "кликнуть", одновременно "стоя курсором", как только он кликнул - "курсор" уже уехал - arrivederci...
т.к. браузер по умолчанию на onClick меняет Focus на другой элемент (на тот на который кликают), а смена фокуса это и есть onBlur, для предыдущего элемента имевшего фокус...
можно правда пробовать комбинировать onBlur и onClick как события... в принципе т.к. события разные - то должно сработать.
А как это - потеря фокуса - если не щелкнул по ссылке? Т.е. т.к. в INPUT ссылок запихать нельзя, то сл-но ссылки находятся вне инпута, значит любой клик по ним - это заведомо потеря фокуса инпутом.
Т.е. чего-то ТЗ хромает! :) Задача не понятна.
блин ну у меня в таком варианте он все переписывает как и в предыдущем т.е.:
site.com/en/ => site.com/en/
site.com/en => site.com/en/
site.com/en/page.html => site.com/en/page.html/
site.com/page.html => site.com/page.html/
т.е. косячит!
возьмитесь кто-нибудь помочь. 10 баксов! или мало? условия те же:
site.com/(*)/(*).html
site.com/(*)/
site.com/(*)
site.com/
все это в:
index.php?lang=$1&page=$2
site.com/(*).html
это в:
index.php?lang=&page=$1
для простоты понимания - если в конце запроса файл - у него всегда приписан .html, если такого нет, т.е. например:
site.com/(*)/(*)
это косяк - т.е. 404
Важно чтобы он не путал язык и файлы - в предложенных вариантах он помимо прочего это и делает.
за исключением:
site.com/(admin)/
site.com/(admin)
это добро в:
site.com/admin/
т.е. "как есть"
неверный подход - если например требуется обработчик несколькими скриптами - в зависимости от того куда обратились - возникает проблема, т.к. внутри index уже не сделать даже перенаправления, а все пихать в один скрипт - чрезчур...
RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)([^/]{1})$ http://%{HTTP_HOST}/$1$2/ [R=301,L]
Мысль понятна - сам как-то не дотумкал - но реализация все равно не получается. Он же в таком случае будет в обращениях вида:
site.com/en считать en файлом - и правило рушится.
блин - запарился, тем более проблема еще возникла - в сочетаниях вида:
site.com/en/
site.com/fr/
site.com/ru/
site.com/.../
нужно последний вариант отличить и оставить как есть.