|
|
|
| Поискал в различных мануалах, не нашел к сожалению, подробного рассмотрения этого вопроса.
Возможны ли случаи, когда этот тег будет возвращать данные другого типа - например INT(1) или BOOL(true)? Может разные браузеры по-разному себя ведут? Кто что слышал? | |
|
|
|
|
|
|
|
для: ДацкыйКот
(20.04.2009 в 16:24)
| | другого типа - нет. тут все хито преобразуется. да и зачем Вам это? | |
|
|
|
|
|
|
|
для: ddhvvn
(20.04.2009 в 16:40)
| | Как зачем? Чтобы распознавать значение конечно же.
Просто проверка ниже не работает:
Потому что такая проверка предполагает значение переменной $checkboxResult INT(1) или BOOL(TRUE), а строку "on" такой код воспринимает как ноль.
Проверил на разных браузерах. Вроде все возвращают "on"/NULL.
Так что сейчас проверку веду по равенству значения строке "on". Но если какой-нить новый браузер будет иначе возвращать значение ((( | |
|
|
|
|
|
|
|
для: ДацкыйКот
(20.04.2009 в 16:24)
| | <input type="checkbox" value="1" onclick="alert(this.value)"> | |
|
|
|
|
|
|
|
для: sim5
(20.04.2009 в 17:21)
| | Хе-хе...
<input type="checkbox" value="1" onclick="alert(typeof (this.value))">
|
Атрибут VALUE тега <INPUT> (любого типа), а также тегов <BUTTON>, <TEXTAREA> и <OPTION> всегда возвращает строку (переменную типа String).
И только лишь у тега <LI> атрибут VALUE всегда возвращает число (тип Number), и всегда - целое (Integer). Причём вернёт вам целое число ВСЕГДА - вне зависимости от того, что вы туда сами написали:
<ol>
<li onclick="alert (typeof (this.value) + '=' + this.value)">first [nothing]</li>
<li value="bla-bla-bla" onclick="alert (typeof (this.value) + '=' + this.value)">second [bla-bla-bla]</li>
<li value="123" onclick="alert (typeof (this.value) + '=' + this.value)">third [123]</li>
<li value="0" onclick="alert (typeof (this.value) + '=' + this.value)">fourth [0]</li>
<li value="4.567" onclick="alert (typeof (this.value) + '=' + this.value)">fifth [4.567]</li>
</ol>
|
| |
|
|
|
|
|
|
|
для: PAT
(20.04.2009 в 18:01)
| | Спасибо, но я знаю об этом. | |
|
|
|
|
|
|
|
для: sim5
(20.04.2009 в 17:21)
| | Спасибо, думаю, внедрю ваше решение.
Прикрутив атрибут value="1" получаю значение:
А такое уже можно обрабатывать вышеприведенным кодом. Да и наверное добавится уверенности, что именно это значение буду получать в будущем. | |
|
|
|
|
|
|
|
для: ДацкыйКот
(20.04.2009 в 18:07)
| | Вам где это надо обрабатывать, как я понимаю в РНР? И в чем проблемы? Вам нужны значения на сервере или типы их? | |
|
|
|
|
|
|
|
для: sim5
(20.04.2009 в 18:21)
| | Ну да.. Установка флажка приводит к ряду действий. Поэтому и необходимо определять установлен он или нет.
Значения и типы здесь идут вместе - см. выше
"проверка предполагает значение переменной $checkboxResult INT(1) или BOOL(TRUE), а строку "on" такой код воспринимает как ноль."
Так что нужно однозначно определить, какое число и какого типа будет приходить из формы. | |
|
|
|
|
|
|
|
для: ДацкыйКот
(20.04.2009 в 21:34)
| | ну чтобы проверить отмечен ли чекбокс надо примерно следующее
<?php
if (isset($_POST['cb']))
//отмечен
|
но "грубо говоря" можно и так
<?php
if ($_POST['cb'])//можно засунуть @ для подавления ошибки
//отмечен
|
| |
|
|
|
|
|
|
|
для: ddhvvn
(20.04.2009 в 22:29)
| |
Нет, такой вариант не пройдет по-моему. Поскольку если $_POST['cb'] = "on", то if(), будет видеть 0.
Так что только иссетом проверять. | |
|
|
|
|
|
|
|
для: ДацкыйКот
(20.04.2009 в 21:34)
| |
<?
//для атрибута value равного числовому значению
//достаточо на сервере проверки
//и любое отличное будет равно неотмеченному чекбоксу
$check = isset($_POST['check']) ? intval($_POST['check']) : 0;
if ($check) {
//действия
}
|
| |
|
|
|
|
|
|
|
для: sim5
(21.04.2009 в 05:51)
| | хм.. ну по сути оба ваших решения проверяют, не является ли переданное значение равным NULL, т.е. методом от противного..
тоже в принципе вариант.. | |
|
|
|
|
|
|
|
для: ДацкыйКот
(21.04.2009 в 19:00)
| | Где тут два решения? | |
|
|
|
|
|
|
|
для: sim5
(21.04.2009 в 20:18)
| | мда.. ну по сути у вас обоих одно решение - isset($_POST( | |
|
|
|
|
|
|
|
для: ДацкыйКот
(21.04.2009 в 21:05)
| | А вы по щучьему велению хотите? | |
|
|
|
|
|
|
|
для: sim5
(21.04.2009 в 21:10)
| | сорри, не понял вашего стеба..
повторюсь - мне в принципе подходит 2 варианта из вышеописанных. Реализовал более ранний: задавать значение в атрибуте value, в частности = 1. Но в принципе на будущее могу реализовать и проверку на NULL.
Непосредственно код указанный выше использовать не буду, поскольку работаю в ZF и доступ к $_POST буду получать через специальные методы контроллера. Но идеи ваши были понятны и полезны. Спасибо. | |
|
|
|
|
|
|
|
для: ДацкыйКот
(22.04.2009 в 00:36)
| | Вот я точно ничего не понимаю - если нужно просто узнать отмечен или нет чекбоск, то какая разница чего он там присылает, если нужно именно значения, то при чем тут NULL.... | |
|
|
|
|
|
|
|
для: sim5
(22.04.2009 в 05:08)
| | вы прикидываетесь?
еще раз...
отмеченный чекбокс присылает по умолчанию строку "on" или значение, заданное в атрибуте value.
неотмеченный чекбокс присылает NULL.
Поэтому проверка включения чекбокса возможна:
1) или путем проверки значения, заданного в атрибуте value например if($checkboxResult == "1")
2) или проверкой на NULL, т.е. оператором isset(). | |
|
|
|
|
|
|
|
для: ДацкыйКот
(22.04.2009 в 08:50)
| | Для того чтобы проверить включение чекбокса, достаточно if (isset(GET/POSTимячебокса)). А вот кто прикидывается.... | |
|
|
|
|
|
|
|
для: ДацкыйКот
(22.04.2009 в 08:50)
| | неотмеченный чекбокс не присылает НИЧЕГО! а значит, смотрите мой первый в этой теме пост.
Чего Вы тут всем мозг парите и себе может быть тоже? Неужели так трудно проверить 4 строчки кода?! | |
|
|
|