Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Проверка состояния checkbox. AJAX


Автор: Parovoz33 19.5.2007, 10:49
Доброго времени суток! Господа, у меня большая проблема, которую никак не могу разрешить. В-общем есть софтина, все в ней сделано на ajax. Мне надо добавить один checkbox и передать его состояние POST'ом. Блин казалось такая тривиальная задача, а я уже которые день не могу справиться =(

В-общем, checkbox я добавил
Код

    ObjMRTableTbodyTrTdTableTbodyTr = document.createElement("tr");
    ObjMRTableTbodyTrTdTableTbodyTrTd = document.createElement("td");
    ObjMRTableTbodyTrTdTableTbodyTrTd.style.width = "90px";
    ObjMRTableTbodyTrTdTableTbodyTrTd.style.whiteSpace = "nowrap";
    ObjMRTableTbodyTrTdTableTbodyTrTd.style.fontFamily = "Arial, Helvetica, sans-serif";
    ObjMRTableTbodyTrTdTableTbodyTrTd.style.fontSize = "9pt";
    ObjMRTableTbodyTrTdTableTbodyTrTd.style.fontWeight = "bold";
    ObjMRTableTbodyTrTdTableTbodyTrTd.style.textAlign = "right";
    ObjMRTableTbodyTrTdTableTbodyTrTd.style.paddingRight = "5px";
    if (NewHeaderStyle == false) {
        ObjMRTableTbodyTrTdTableTbodyTrTd.style.borderBottom = "1px solid #ebe9e4";
    }
    ObjMRTableTbodyTrTdTableTbodyTrTd.appendChild(document.createTextNode(" "));
    ObjMRTableTbodyTrTdTableTbodyTr.appendChild(ObjMRTableTbodyTrTdTableTbodyTrTd);

    ObjMRTableTbodyTrTdTableTbodyTrTd = document.createElement("td");
    ObjMRTableTbodyTrTdTableTbodyTrTd.style.width = "70%";
    ObjMRTableTbodyTrTdTableTbodyTrTd.style.fontFamily = "Arial, Helvetica, sans-serif";
    ObjMRTableTbodyTrTdTableTbodyTrTd.style.fontSize = "9pt";
    if (NewHeaderStyle == false) {
        ObjMRTableTbodyTrTdTableTbodyTrTd.style.borderBottom = "1px solid #ebe9e4";
    }

    ObjMRTableTbodyTrTdTableTbodyTrTd.innerHTML = "<input type=\"checkbox\" name=\"MsgAnonymous\" id=\"MsgAnonymous\"><font class=\"swbold\">Send Anonymously </font>"; // Ключевая строка !!!

    ObjMRTableTbodyTrTdTableTbodyTr.appendChild(ObjMRTableTbodyTrTdTableTbodyTrTd);
    ObjMRTableTbodyTrTdTableTbody.appendChild(ObjMRTableTbodyTrTdTableTbodyTr);

    //---


На странице отображается корректно. Далее передаем информацию POST'ом. В самой программе делается это следующим образом, ну и я добавил по аналогии. Думаю кстати весь затык здесь, ибо я к сожалению не гуру JS..
Код

        // Email To/Cc/Bcc/Header fields
        POSTString += "&emailto=" + encodeURIComponent(document.getElementById("ComposeMsgTo").value);
        POSTString += "&emailpriority=0";
        POSTString += "&emailcc=" + encodeURIComponent(document.getElementById("ComposeMsgCc").value);
        POSTString += "&emailfrom=" + encodeURIComponent(document.getElementById("ComposeMsgFrom").value);
        POSTString += "&anonymous=" + encodeURIComponent(document.getElementById("MsgAnonymous").checked); // Вот эту строчку я добавил, и думаю что затык здесь.

И вот POST['anonymous'] приходит, но он всегда приходит как TRUE, внезависимости от того нажат чекбокс или нет. Я уже не знаю что делать... 

Автор: vasac 19.5.2007, 18:54
Код

alert(document.getElementById("MsgAnonymous").checked);

что показывает?

Автор: Parovoz33 21.5.2007, 21:27
В-общем вышел я из положения.. 
А показывало как надо - либо false, либо true

Но скрипт все равно всегда воспринимал все как TRUE... то есть я не знаю, похоже на то что он булевские TRUE и FALSE преобразовывал в строковые "TRUE" и "FALSE"... Хз кароче. Вот как я вышел из ситуации
Код

    if (document.getElementById("MsgAnonymous").checked)    
        POSTString += "&anonymous=1";// + encodeURIComponent(document.getElementById("MsgAnonymous").checked); 
    else
        POSTString += "&anonymous=0";


страно конечно но главное работает  smile 

Всем спасибо!!

Автор: vasac 22.5.2007, 10:01
Чего странного то?
Все параметры воспринимаются в PHP, как строки. Соответственно "anonymous=false", как непустая строка "false", приводящаяся к true

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)