|
|
|
| Имеется чек бокс и кнопка
<span id="oferta"><label>С <a href="htp:/333/">условиями доставки</a> согласен</label><input type="radio" name="oferta" value="1" /></span><input type="submit" name="checkout" class="button" value="Оформить заказ">
| Как сделать так что бы пока чекбокс не нажат нельзя было нажимать на кнопку.и еще 1 вопрос как сделать так что бы по чекбоксу открывались поля для | |
|
|
|
|
|
|
|
для: fastheel
(13.03.2013 в 13:36)
| | Игла в яйце, яйцо в ларце... К чему этот бедлам:
<span id="oferta"><label>С <a href="htp:/333/">условиями доставки</a> согласен</label><input type="radio" name="oferta" value="1" /></span>
?
Зачем вам label если он не выполняет своей функции? Где чекбокс и "для" это что? | |
|
|
|
|
|
|
|
для: confirm
(13.03.2013 в 13:45)
| | Ну тогда просто есть кнопка
<input type="submit" name="checkout" class="button" value="Оформить заказ">
| Надо что бы пока не нажмеш на чекбокс нельзя нажать на кнопку | |
|
|
|
|
|
|
|
для: fastheel
(13.03.2013 в 22:30)
| |
<input type="checkbox" id="check" onchange="changeButtonState(this)"/>
<input type="button" id="btn" disabled="disabled" value="Button"/>
<script>
function changeButtonState(checkbox) {
var btn = document.getElementById('btn');
if (checkbox.checked) {
btn.disabled = false;
} else {
btn.disabled = true;
}
}
</script>
|
| |
|
|
|
|
|
|
|
для: psychomc
(13.03.2013 в 22:59)
| | спасибо вам обоим!! сделал получилось!
Есть еще такой вопрос про Js есть например 2 чекбокса
по умолчанию нажат чекбокс №1
но если нажимаешь на чекбокс №2 то отрывается поле для ввода в которое можно вписать время не раньше чем время в данный момент + 90 мин. 0_0
Сможете помочь, пожалуйста? | |
|
|
|
|
|
|
|
для: fastheel
(13.03.2013 в 22:30)
| | 1. чекбокс - это <input type="checkbox"> в виде квадратика, куда можно поставить галочку
2. у вас же в исходном коде не чекбокс, а радиокнопка <input type="radio"> - кружочек, в котором можно поставить точечку
3. тег <label></label> в основном нужен для того, чтобы помочь клиенту попасть в эти самые чекбоксы или радиокнопки - они ведь маленькие
поэтому обычно сами чекбоксы и радиокнопки вместе с текстом помещают вовнутрь тега <label></label>, чтобы клик по любому месту внутри <label></label> (в т.ч. и по тексту) приводил к отметке чекбокса галочкой (и радиокнопки - точечкой) или к снятию отметки
вот так:
<label>
<span id="oferta">С <a href="htp:/333/">условиями доставки</a> согласен
<input type="radio" name="oferta" value="1" /></span>
</label>
|
4. сделайте кнопку изначально недоступной <input type="submit" name="checkout" disabled="1" />,
а на чекбокс (или радиокнопку) навесьте обработчик события onclick, по которому будет проверяться его "отмеченность" - если отмечен, то кнопка сабмита активируется, если не отмечен, то кнопка сабмита снова становится недоступной
вот так:
<input type="radio" name="oferta" value="1" onclick="this.form.checkout.disabled = !this.checked" />
|
| |
|
|
|
|
|
|
|
для: ЯСА
(13.03.2013 в 23:04)
| | спасибо вам обоим!! сделал получилось!
Есть еще такой вопрос про Js есть например 2 чекбокса
по умолчанию нажат чекбокс №1
но если нажимаешь на чекбокс №2 то отрывается поле для ввода в которое можно вписать время не раньше чем время в данный момент + 90 мин. 0_0
Сможете помочь, пожалуйста? | |
|
|
|
|
|
|
|
для: fastheel
(13.03.2013 в 23:41)
| | Спасибо второму, и делайте так, как он показал, и не пишите так, как советует первый.
Задавая первый вопрос, вы говорите о каком-то не конкретном понятии. Чекбокс не может быть нажат, это не тумблер на реальной панели - чекбокс может быть выбран/отмечен, не выбран/снята отметка с него. И реагировать при этом можно как на щелчок по нему, так и на нажатие или отпускание кнопки мыши (клавиши клавиатуры).
Поэтому и второй вопрос видимо должен предполагать - если чекбокс №2 выбран (отмечен), то показать поле, иначе скрыть его. Так? Если так, то можно, но встает вопрос - а что такое "время не раньше текущего"? Во-первых, все что вы не делаете на клиенте, все это можно обойти, подделать. Но это еще не все, вы ведь это время для сервера уготовали, так ведь. И если на клиенте можно баловаться как угодно, контролировать ввод с текущим временем, то на сервере в любом случае его нужно проверять на допустимость, а вот для сервера понятие время относительно текущего, это понятие несколько иное будет, хотя бы часовой пояс. А вам какое надо? | |
|
|
|
|
|
|
|
для: confirm
(14.03.2013 в 08:04)
| | Время сервера + 90 мин | |
|
|
|
|
|
|
|
для: fastheel
(14.03.2013 в 09:42)
| | Время сервера для клиента недоступно, если его только не запрашивать постоянно. Другими словами, вы можете сравнивать с некой меткой времени переданной с сервера изначально. Это предполагается? | |
|
|
|
|
|
|
|
для: fastheel
(14.03.2013 в 09:42)
| | как я понял, у вас в работе страница, где клиенту предлагается доставить на дом что-то ему нужное - пиццу, пиво, суши, проститутку...
ваши стандартные условия доставки - в течении 1.5 часов с момента заказа
но также есть возможность доставки к определённому времени, кое превышает 1,5 часа с момента заказа
верно я понял?
-----
если верно... раз работаете вы в каком-то конкретном регионе (городе, районе), то ваши клиенты должны быть в вашем часовом поясе
вам же не нужны заказы от клиентов из Владивостока, если вы работаете в Калининграде...
значит, вам по-любому необходимо изначально проверять клиента:
-- либо по местонахождению его IP
-- либо локальное время клиента сравнивать с вашим часовым поясом
----------
текущее время сервера можно получить в момент выбора клиентом услуги по доставке в определённое время (используя xmlhttprequest)
однако, клиент может ввести нужное ему время доставки, а кнопку сабмита нажать через два часа...
поэтому это же текущее время сервера вместе со временем доставки надо передавать по сабмиту на сервер, чтобы там исчислить разницу и добавить эту разницу к настоящему серверному времени
так что... не всё так просто
хотя и не сложно :) | |
|
|
|
|
|
|
|
для: ЯСА
(14.03.2013 в 13:10)
| | Сейчас я получаю время этим скрипотм
obj_hours=document.getElementById("hours");
function wr_hours()
{
time=new Date();
time_min=time.getMinutes();
time_hours=time.getHours();
time_wr=((time_hours<10)?"0":"")+time_hours;
time_wr+=":";
time_wr+=((time_min<10)?"0":"")+time_min;
time_wr=" "+time_wr;
obj_hours.innerHTML=time_wr;
}
wr_hours();
setInterval("wr_hours();",1000);
|
Он ставит время правильно и доставка осуществляется в 1 городе с 1 часовым поесом | |
|
|
|
|
|
|
|
для: fastheel
(14.03.2013 в 15:56)
| | Если в одном городе, то зачем вам время сервера? Работайте с локальным, которое вы и получаете сейчас.
Определитесь с допустимым форматом ввода времени клиентом. При верном вводе получайте метку времени, а уж ее сравнивайте с допусками. | |
|
|
|
|
|
|
|
для: confirm
(14.03.2013 в 08:04)
| | может в таком случае расскажете о подводных камнях моего примера, мб я чего-то не знаю | |
|
|
|
|
|
|
|
для: psychomc
(14.03.2013 в 16:39)
| | Ну а чего тут знать, кроме как золотого правила - не стоит писать громоздкий код для того, что решается просто.
Значение атрибута disabled как бы его вы не записали: disabled="disabled", disabled="true", disabled="1" или даже просто disabled (хотя это не для каждого документа есть "валидность"), браузером будет воспринято как булево значение. Булевым значением является и значение атрибута checked чекбокса. Значит достаточно присваивать это значение чекбокса атрибуту disabled кнопке. Если это делать по щелчку на чекбоксе, значит это значение нужно инвертировать (булево значение также может являться операндом в логических операциях как число), так как изменение его состояния происходит после отпускания кнопки мыши. Следовательно можно обрабатывать событие отпускания кнопки и присваивать текущее значение.
Но это еще не все. Вы заходя в квартиру, и зажигая свет вряд ли задумываетесь над тем включен ли у вас выключатель или нет в это время, вы просто изменяете его состояние. Следующее изменение его состояния обязательно выключит свет. Так и с чекбоксом - нельзя перевести чекбокс из состояние выбран в состояние выбран, можно только в противоположное. Из этого следует, что вас вообще может не волновать его состояние, главное это начальное состояние кнопки (как лампочки) и чекбокса (как переключателя лампочки). Отсюда - можно сразу управлять "лампочкой", инвертируя ее состояние:
<input type="checkbox" onclick="this.form.send.disabled ^= 1" />
где send имя кнопки. | |
|
|
|
|
|
|
|
для: confirm
(14.03.2013 в 16:55)
| | порадовал конечно пример с квартирой. могу вам сказать о другом. ваше мнение всего лишь частное, никакое это не правило. почитайте например "совершенный код", и то что там написано по поводу например фигурных скобок. тоже частное мнение конечно, но противоположное вашему. суть в том, что не всегда коротко есть хорошо. я вот например считаю, что с точки зрения читабельности и расширяемости мой вариант лучше. плюс отдельный метод обычно удобнее, хотя бы если предполагается работа с другими событиями, или если они будут развешиваться динамически, чтобы хотя бы не смешивать html и is. по поводу состояния чекбокса тоже вопрос, задача поставлена не четко. избавьте меня плиз от абстрактных примеров про квартиры, лучше конкретика | |
|
|
|
|
|
|
|
для: psychomc
(14.03.2013 в 17:33)
| | Ну да, вы о варианте забивания гвоздя пневмомолотом. Это мы проходили.
Читабельность, это не проблема, если понимать суть вещей, а следовательно и код. А вот длинные излишние портянки кода, это просто лишние байты загружаемые пользователем напрасно.
И так по всем вашим доводам - глупостей не городите. | |
|
|
|
|
|
|
|
для: confirm
(14.03.2013 в 17:41)
| | да уж, давайте еще про обфускаторы поговорим. вы наверное и библиотеки не используете, пишите всегда свой велосипед только бы сэкономить драгоценные байты. повторяюсь, ваше мнение всего лишь частное, как и мое. спорить тут не о чем, это как спорить какой стиль программирования лучше или какой язык. что касается примера, то информации настолько мало, что нельзя сделать пример полностью соответствующий всем требованиям. я всего лишь привел наглядный работающий пример, в отличии кстати от второго, который вне формы работать не будет. | |
|
|
|
|
|
|
|
для: psychomc
(14.03.2013 в 17:59)
| | Значит так - обфускаторы, библиотеки к этому отношения не имеют. Если же вас это интересует, отвечу - я использую все, что необходимо и оптимально для решения задачи. Так что не порите чепухи в своих домыслах.
Человек обязан думать, и не важно программная сфера деятельности его или нет, ибо все что окружает нас и созданное человеком, это плод его мышления, включая и программные продукты. Чем богаче воображение человека, чем более абстрагироваться он может в мышлении своем, тем привлекательнее будет плод его труда, и наоборот. И конечная цель этих размышлений всегда одна - оптимальность и прагматичность. Серость и отвратительность плодов труда человека, как следствие отсутствия такого мышления, вы можете наблюдать у нас практически во всем.
Ваши доводы, которые вы описываете настолько глупы, что, право, их даже комментировать не охота. Поставлена простая и конкретная задача, вы же пытаетесь облечь ее кучей условий, а спрашивается зачем? Оптимальность, это не самоцель, это разумное к чему нужно стремиться обязательно, тем более в программах.
Вы либо не понимаете простых вещей, и потому пишите так, либо просто не хотите задумываться, и пишите код по накатанной, так как некогда увидели в умном учебнике, а сделать шаг в сторону от "догмы" вам просто не дано. Если оправдывать лишнее домыслами, которые вы тут приводите как аргументы, то грош вам цена как программисту. Вот в этом я сомневаюсь, а значит у вас просто "закостенелое мышление", и вам просто надо избавляться от него, тогда сравнение со светом вам не будет казаться чем-то необычным и в решении программных задач появится полет фантазии. | |
|
|
|
|
|
|
|
для: psychomc
(14.03.2013 в 16:39)
| | Вообщем задачу которая нужна.
Время в блок можно ставить только "время сейчас +90 мин" время локальное | |
|
|
|
|
|
|
|
для: fastheel
(14.03.2013 в 16:58)
| | Это как управлять полем:
<form>
<label><input name="settime" type="checkbox" onclick="this.form.time.style.visibility = this.checked ? 'visible' : 'hidden'" /> Input time</label>
<input name="time" style="visibility:hidden" />
</form>
|
Можно для этого и стиль display применять, но нужно учитывать при этом, что элементы формы могут "скакать", если таковые есть за полем ввода.
А что касается времени, то я для кого писал что надо сделать сперва? Время, это многоликое понятие, и так "лихо" его сравнить как у вас написано можно только если повезет. Сравнивать нужно метки времени возвращаемые методом getTime(). Но прежде чем получить эту метку из времени введенное пользователем, нужно определиться с форматом ввода, проверять этот формат на допустимость, и только потом сравнивать. Причем +90 минут, это вам так хочется, но можно ввести и -3 часа, чего у вас в условии вообще не оговаривается.
Гарантированно корректно во всех браузерах можно получить метку времени (с учетом параметров времени) в конструкторе new Date() со следующими аргументами:
new Date("Месяц дд, гггг чч:мм:сс")
new Date(гг, мм, дд, чч, мм, сс)
|
Если аргументы времени можно опускать, то даты нет. В строковой версии (первая запись) должно быть указано полное английское название месяца (сокращения не допускаются). Если параметры времени не указаны, они принимаются равными 0 (полночь). Для значений меньше 10 используется одно- или двухсимвольная запись. Порядок следования аргументов должен быть именно таким.
Определяйтесь с этим, определяйтесь как вы будете проверять корректный ввод даты (или воспользуетесь календарем), и только затем как было сказано выше. | |
|
|
|
|
|
|
|
для: confirm
(14.03.2013 в 17:27)
| | Спасибо, но тут возниклу другая проблема
у меня есть поля
<input name="flor" type="text" value="{$flor|escape}" data-format=".+" data-notice="Введите этаж" />
| в которое вводиться текст. Как сделать так что бы поставленый или не поставленый чекбокс так же вводился в глоб переменную по типу кода выше | |
|
|
|
|
|
|
|
для: fastheel
(15.03.2013 в 12:25)
| | А понятнее нельзя объяснить? Что значит "поставленый или не поставленый чекбокс" и как можно ввести чекбокс в переменную? | |
|
|
|
|
|
|
|
для: confirm
(15.03.2013 в 12:43)
| | Ну смотриТЕ есть поле
<span>На время<span id="hours"></span>(не ране 90 минут)</span>
<span><input name="times" placeholder="Например 16-35" type="text" value="{$time|escape}" /><span>
|
мне надо что бы если чек бокс был нажат то туда просто вписывалось текущий
(поправлено модератором) | |
|
|
|
|
|
|
|
для: fastheel
(15.03.2013 в 12:49)
| | Я вас просил объяснить, а не добавлять новых вопросов.
"туда просто вписывалось текущий" - можно понять как запись текущего значения времени в поле ввода этого времени (атрибут value), а возможно вы под этим подразумеваете нечто свое, что?
Кроме этого, могут быть две ситуации при этом:
1) Это "туда просто вписывалось текущий" записывается как значение в поле ввода при выборе чекбокса пользователем (локальная задача).
2) Это "туда просто вписывалось текущий" записывается как значение в поле ввода на сервере (здесь - {$time|escape}, и надо полагать как присвоить это значение переменной шаблонизатора?), при анализе полученной формы и возврате ее пользователю по неким причинам (серверная задача).
И так и осталось загадкой что же за глобальная переменная при этом должна быть. Может поясните о чем речь в конце концов? | |
|
|
|
|
|
|
|
для: confirm
(15.03.2013 в 13:04)
| | Да я просто проше придумал не нужна она уже просто в поле или ты вводиш сам текст или он вводиться при нажатии чекбокса! Все! | |
|
|
|