Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: checkbox + js + php
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » checkbox + js + php

Страниц (2): [1] 2 »
 

1. megahertz - 07 Ноября, 2016 - 09:53:15 - перейти к сообщению
Добрый день формучане,
разбираюсь со следующей задачкой
есть код:
чекбокс


функция для работы с чекбоксом
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).ready(function(){
  2.         $("input:checkbox").change(function() {
  3.             if($(this).is(":checked")) {
  4.                 $.ajax({
  5.                     url: 'on.php',
  6.                     type: 'POST',
  7.                     data:{action:'call_this'},
  8.                 });
  9.             } else {
  10.                 $.ajax({
  11.                     url: 'on.php',
  12.                     type: 'POST',
  13.                     data:{action:'call_this2'},
  14.                 });
  15.             }
  16.         });
  17.     });



при нажатии на чекбокс выполняется действие call_this которое влечет за собой запись On в базу данных через скрипт on.php, соответственно при снятии call_this2 так же выполняется действие которое перезаписывает On в Off т.е данные обрабатываются и передаются корректно, но вот вопрос в следующем, как заставить чекбокс помнить(согласно записи в базе) нажат он или нет если я обновлю страничку или зайду с другого клиента ?

Сейчас для вывода текущего статуса я делаю так:
PHP:
скопировать код в буфер обмена
  1. if ($stat1 == "On")
  2. echo "status - on";
  3. else
  4. echo "status - off";
  5. }
2. 3d_killer - 07 Ноября, 2016 - 09:57:38 - перейти к сообщению
сделать запрос в базу если запись есть то
<input type="checkbox" checked>
3. megahertz - 07 Ноября, 2016 - 09:59:51 - перейти к сообщению
спасибо, смотрел в сторону if ($(this).is(":checked"))... но что-то пошло не так и в итоге вернулся к вышеописанному вариантуНедовольство, огорчение
3d_killer, можно чуточку подробнее...возможно с примером на коде
4. StereoFlo - 07 Ноября, 2016 - 10:57:18 - перейти к сообщению
Информации мало, 3d_killer сказал верно. Надо привязываться к БД, в случае если запись имеет флаг on, то ставить чекбокс

PHP:
скопировать код в буфер обмена
  1.  
  2. $hasFlag = "тут описать запрос к БД, допустим  select flag from table where item_id = 1";
  3. if ($hasFlag) {
  4. print '<input type="checkbox" checked>';
  5. } else {
  6. print '<input type="checkbox">';
  7. }
  8.  
  9.  
5. megahertz - 08 Ноября, 2016 - 07:34:50 - перейти к сообщению
таки не получилосьНедовольство, огорчение
пробую делать так:

CODE (html):
скопировать код в буфер обмена
  1.  
  2.  <input type="checkbox" id="1"/>


CODE (javascript):
скопировать код в буфер обмена
  1. <script type="text/javascript">
  2.     $(document).ready(function(){
  3.         $("input:checkbox").change(function() {
  4. var data = {};
  5.  if ($(this).is(":checked"))
  6.      data.action = 'off';
  7. else
  8.         data.action = 'on';
  9.  
  10. $.ajax({
  11.         url: './on.php',
  12.         type: "POST",
  13.         data: {action:'on', action:'off'},
  14. })
  15. .done(function(data) {
  16. document.getElementById('1').checked = (data.status == "on");  });
  17. </script>
  18.  


on.php
PHP:
скопировать код в буфер обмена
  1. $stat1 = $row['value'];
  2.  
  3. if ($stat1 == "on")
  4. echo "on";
  5. else
  6. echo "off";
  7. }


По моему с синтаксисом беда, но в силу незнания js не соображу как корректно выполнить проверки для чекбокс
6. 3d_killer - 08 Ноября, 2016 - 12:56:38 - перейти к сообщению
что за???
показывал же
CODE (html):
скопировать код в буфер обмена
  1. <input type="checkbox" checked>
7. megahertz - 08 Ноября, 2016 - 19:50:18 - перейти к сообщению
исправил, чекбокс все равно не проверяется
8. 3d_killer - 08 Ноября, 2016 - 19:51:31 - перейти к сообщению
что тут?

что выдаст?
9. megahertz - 08 Ноября, 2016 - 20:00:01 - перейти к сообщению
string(2) "on" при это чекбокс стоит как отмеченный, если сменить запись в базе и получить string(3) "off" то чекбокс также остается как отмеченный
10. 3d_killer - 08 Ноября, 2016 - 20:08:14 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. if ($stat1 == "on"):
  2. $select=" selected";
  3. else:
  4. $select="";
  5. endif;
  6. echo "<input type='checkbox' ".$select.">";
11. megahertz - 08 Ноября, 2016 - 20:08:41 - перейти к сообщению
пардон, исправился

PHP:
скопировать код в буфер обмена
  1. if ($stat1 == "on")
  2. echo '<input type="checkbox" checked>';
  3. else
  4. echo '<input type="checkbox">';

(Добавление)
PHP:
скопировать код в буфер обмена
  1. if ($stat1 == "on"):
  2. $select=" selected";
  3. else:
  4. $select="";
  5. endif;
  6. echo "<input type='checkbox' ".$select.">";


при такой проверке ничего не меняется
12. 3d_killer - 08 Ноября, 2016 - 20:37:20 - перейти к сообщению
у меня меняется
13. megahertz - 09 Ноября, 2016 - 07:50:28 - перейти к сообщению
спасибо за помощь
(Добавление)
еще вопрос, а можно как то выполнить проверку средствами ajax + php?
т.е выполнять проверку и действие через чекбокс через функцию и результат уже выводить на страничку
изначально все это было с задумано для проверки функцией, сейчас ;t проверку получилось выполнить без js
14. megahertz - 10 Ноября, 2016 - 13:08:13 - перейти к сообщению
разобрался, но остался последний вопрос)
Хочу прикрутить к чекбоксу стиль но почему то все стили используют свои идентификаторы...
Например:
CODE (html):
скопировать код в буфер обмена
  1. <section>
  2.         <div class="checkboxTwo">
  3.                 <input type="checkbox" value="1" id="checkboxTwoInput" name="" />
  4.                 <label for="checkboxTwoInput"></label>
  5.         </div>
  6. </section>



соответственно у него идентификатор=checkboxTwoInput а для работы моего чекбокса мне нужно делать id=checkbox_room, т.е на одном чекбоксе 2 идентификатора которых быть не может... если повесить на стиле мой id то чекбокс работать перестает...

CODE (html):
скопировать код в буфер обмена
  1. <input type="checkbox" id="checkbox_room"/>


$(document).ready(function(){
$("#checkbox_room").change(function() {
if($(this).is(":checked")) {
$.ajax({
url: 'on.php',
type: 'POST',
data:{action2:'on'},
});
} else {
$.ajax({
url: 'on.php',
type: 'POST',
data:{action2:'off'},
});
}
});
});
[/code]
15. 3d_killer - 10 Ноября, 2016 - 13:31:15 - перейти к сообщению
задавай префиксы, ищи элемент по классу

 

Powered by ExBB FM 1.0 RC1