Javascript конкатенации URL для выбранных (или нет) флажков - PullRequest
1 голос
/ 20 октября 2010

У меня есть этот код для того, что «отправляет» GET true или false относительно того, если флажок установлен или нет:

var isChecked = document.myform.checkbox.checked ? 1 : 0;
var isChecked0 = document.myform.checkbox0.checked ? 1 : 0;
var isChecked1 = document.myform.checkbox1.checked ? 1 : 0;

xmlhttp.open("GET","roulette2.php?boxchecked=" + isChecked,true);
xmlhttp.send();

HTML выглядит так:

<input type="checkbox" name="checkbox" value="checkbox" />00<br />
<input type="checkbox" name="checkbox0" value="checkbox" />0<br />
<input type="checkbox" name="checkbox1" value="checkbox" />1<br />

Как вы можете найти там:

xmlhttp.open("GET","roulette2.php?boxchecked=" + isChecked,true);

Это только проверяет, установлен ли первый флажок, а не другие.

Как вы можете изменить xmlhttp.open, чтобы обозначить 3 флажка «опция, которую нужно отметить».

Заранее спасибо !!

Trufa

1 Ответ

2 голосов
/ 20 октября 2010

Вы хотите отправить все проверенные состояния в одну переменную?

Объединить состояния в строке:

var dm = document.myform;
var isCheched = (dm.checkbox.checked ? "1" : "0")+
(dm.checkbox0.checked ? "1" : "0") +
(dm.checkbox1.checked ? "1" : "0");

Вы получите 000, если ни один не отмечен, 001, если отмечен флажок, и 111, если все проверено.

ОБНОВЛЕНИЕ

Я снова посмотрел на твой код и увидел рулетку ... Ты пишешь игру в рулетку?Тогда это может быть полезно:

function submitRoulette( ) {
    var i,box;
    var boxes = document.getElementById("roulette").getElementsByTagName("input");
    var checked=[]; // We are going to conatenate the values in this array.

    for (i=0; i < boxes.length; ++i) {
        box = boxes[i];
        if (box.name=="b" && box.checked) {
            checked.push(box.value);
        }
    }

    checked = checked.join(""); // Converts the array to a string.

    xmlhttp.open("GET","roulette2.php?boxchecked=" + checked,true);
    xmlhttp.send();

    return false; // Prevents the form from being submited the normal way
}

И с разметкой HTML, например:

<form id="roulette" method="post" action="" onsubmit="return submitRoulette()">
<div>
    <span><input type="checkbox" name="b" value="0" />0</span>
    <span><input type="checkbox" name="b" value="-" />zero</span>
    <span><input type="checkbox" name="b" value="z" />00</span>
</div>

<div>
    <span><input type="checkbox" name="b" value="1" />1</span>
    <span><input type="checkbox" name="b" value="2" />2</span>
    <span><input type="checkbox" name="b" value="3" />3</span>
    <span><input type="checkbox" name="b" value="b" />1-3</span>
</div>
[snip]
<div>
    <span><input type="checkbox" name="b" value="V" />31</span>
    <span><input type="checkbox" name="b" value="W" />32</span>
    <span><input type="checkbox" name="b" value="X" />33</span>
    <span><input type="checkbox" name="b" value="l" />31-33</span>
</div>
<div>
    <span><input type="checkbox" name="b" value="Y" />34</span>
    <span><input type="checkbox" name="b" value="Z" />35</span>
    <span><input type="checkbox" name="b" value="a" />36</span>
    <span><input type="checkbox" name="b" value="m" />34-36</span>
</div>
<div>
    <span><input type="checkbox" name="b" value="n" />1..34</span>
    <span><input type="checkbox" name="b" value="o" />2..35</span>
    <span><input type="checkbox" name="b" value="p" />3..36</span>
</div>

<div>
    <span><input type="checkbox" name="b" value="q" />1-12</span>
    <span><input type="checkbox" name="b" value="r" />13-24</span>
    <span><input type="checkbox" name="b" value="s" />25-36</span>
</div>
<div>
    <span><input type="checkbox" name="b" value="t" />1-18</span>
    <span><input type="checkbox" name="b" value="u" />19-36</span>
</div>
<div>
    <span><input type="checkbox" name="b" value="v" />odd</span>
    <span><input type="checkbox" name="b" value="w" />even</span>
    <span><input type="checkbox" name="b" value="x" />red</span>
    <span><input type="checkbox" name="b" value="y" />black</span>
</div>

<button type="submit">Send</button>
</form>

В вашем php-коде вы должны декодировать значения:

0-35 is 0-9,A-Z and 36 = a.
row 1 (1-3) = b, row 2 (4-6) = c ... row 12 (33-36) = m
col 1 (1..34) = n, col 2(2-24) = o, col 3(3-36) = p
1-12 = q, 13-24 = r, 25-36 = s
1-18 = t, 19-36 = u
odd = v, even = w
red = x, black = y
00 = x
0 or 00 = - (minus)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...