Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как сделать кроссбраузерный checkbox (https://javascript.ru/forum/jquery/18386-kak-sdelat-krossbrauzernyjj-checkbox.html)

irkprin 28.06.2011 19:45

Как сделать кроссбраузерный checkbox
 
есть checkbox
<input type="checkbox" name="hard_copy" OnClick="output();" >


есть ajax
function output() {
	hard_copy=document.getElementsByName('hard_copy').value;
	two_copy=document.getElementsByName('two_copy').value;
	nocache = Math.random();
	http.open('get', '/chebe-kopir-pechat-zakaz.php?hard_copy='+hard_copy+'&two_copy='+two_copy+'&nocache='+nocache);
	http.onreadystatechange =  searchNameqReply;
	http.send(null);
}


вывожу
echo $hard_copy=$_POST['hard_copy'];


Корректно работает только в Хроме. Т.е. постановка и снятие галки ведет к запланированному результату.
В других браузерах: FF, Opera, IE выдает всегда On, true, 1, Yes...Как только не вертел...

Гуглил день, не помогает... Чувствую, что checkbox иначе как то нужно обработать в ajaxe, но как?

melky 28.06.2011 20:59

что такое

document.getElementsByName('hard_copy').value


какое может быть у флажка значение?

irkprin 28.06.2011 23:00

теоретически value можно указать. здесь конечно оно лишнее. думаю будет работать и совсем без этой сточки.
Если шаришь, подскажи как true/false кроссбраузерно передать в php?

melky 28.06.2011 23:24

т.е. состояние чекбокса передать php скрипту?

ваш код так же остаётся (только подправьте,если что)

а щас будет выводиться ваш URL. обратите внимание на hard_copy в модальном окне

<input type="checkbox" name="hard_copy"> Тач ми

<script>
var hard_copy = document.getElementsByName('hard_copy')*!*[0]*/!*;

hard_copy.*!*onchange*/!*=function(){

/*ваш код AJAX*/

            alert ( "URL : \n\n "+'/chebe-kopir-pechat-zakaz.php?hard_copy='+hard_copy.checked )

}
</script>

irkprin 29.06.2011 08:55

не работает к сожалению. через IE7 даже здесь можно проверить. когда проверяю у себя IE после клика на чекбокс пишет "Неопознанная ошибка"

irkprin 29.06.2011 09:12

В опере тоже интересно отрабатывает! Включил вывод строки:
<script type="text/javascript">
$(document).ready(function(){
  function showValues() {
    var str = $("form").serialize();
    $("#results").text(str);
  }
  $(":checkbox, :radio").click(showValues);
  showValues();
});
</script>


Когда галка есть выводит: &material=1&hard_copy=on&kol_files
Когда нет: &material=1&kol_files

при этом php отрабатывает, что hard_copy всегда в on!

Cariño 29.06.2011 10:35

Цитата:

Сообщение от irkprin (Сообщение 111035)
не работает к сожалению. через IE7 даже здесь можно проверить. когда проверяю у себя IE после клика на чекбокс пишет "Неопознанная ошибка"

В ie7 просто событие onchange выполняется после потери фокуса checkbox. Замените его на onclick и всё будет работать

irkprin 29.06.2011 11:32

Спасибо ВСЕМ большое, разобрался :dance:


Часовой пояс GMT +3, время: 20:45.