document.myform.checkbox.checked без формы - PullRequest
0 голосов
/ 23 февраля 2011

я знаю, что то, что я упомянул в вопросе (выше), невозможно, но у меня здесь проблема, у меня двойная тройка и так далее, формы внутри страницы, и мне нужно отправить форму, которая получает все данные внутри предыдущих форм.

ВНИМАНИЕ: я начал с javascript, как 3 или 4 дня назад, я привык к программированию на стороне сервера.

Посмотрим:

javascript проверяет, установлены ли флажки (некоторые из них):

function KeepCount() {

var NewCount = 0;

if (document.iphone3g.iphone3g1.checked)
{NewCount = NewCount + 1;}

if (document.iphone3g.iphone3g2.checked)
{NewCount = NewCount + 1;}

if (document.iphone3g.iphone3g3.checked)
{NewCount = NewCount + 1;}

if (document.iphone3g.iphone3g4.checked)
{NewCount = NewCount + 1;}

if (document.iphone3gs.iphone3gs1.checked)
{NewCount = NewCount + 1;}

if (document.iphone3gs.iphone3gs2.checked)
{NewCount = NewCount + 1;}

if (document.iphone3gs.iphone3gs3.checked)
{NewCount = NewCount + 1;}

if (document.iphone3gs.iphone3gs4.checked)
{NewCount = NewCount + 1;}

if (document.iphone4.iphone41.checked)
{NewCount = NewCount + 1;}

if (document.iphone4.iphone42.checked)
{NewCount = NewCount + 1;}

if (document.iphone4.iphone43.checked)
{NewCount = NewCount + 1;}

if (document.iphone4.iphone44.checked)
{NewCount = NewCount + 1;}

if (NewCount > 1){
    descontox = 20/100;
    valorx = (total.value * descontox).toFixed(2);
    valor.value  = (total.value - valorx).toFixed(2);
    }

if (NewCount <= 1){
    valor.value = ("");}
}

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

Если вы заметили, у меня есть несколько «если (document.iphone3g.iphone3g1.checked) {сделать что-то}, что взаимодействует с этим:

    <div id="one" class="hiddenDiv">

            <div class="image">
                <img class="large" src="images/iphone3g.png" alt="iphone3g" width="141" height="141" />
            </div>
            <form name="iphone3g">
    <input onclick="clickCh(this);KeepCount();" type="checkbox" name="iphone3g1" value="50.00"> Vidro Partido<br />
    <input onclick="clickCh(this);KeepCount();" type="checkbox" name="iphone3g2" value="59.00"> LCD Danificado<br />
    <input onclick="clickCh(this);KeepCount();" type="checkbox" name="iphone3g3" value="80.00"> Substituir capa traseira<br />
    <input onclick="clickCh(this);KeepCount();" type="checkbox" name="iphone3g4" value="38.00"> Botão Volume
            </form>
    </div>
            <div id="two" class="hiddenDiv">

            <div class="image">
                <img class="large" src="images/iphone3gs.png" alt="iphone3g" width="141" height="141" />
            </div>
    <form name="iphone3gs">
    <input onclick="clickCh(this);KeepCount();" type="checkbox" name="iphone3gs1" value="60"> Vidro Partido 3GS<br />
    <input onclick="clickCh(this);KeepCount();" type="checkbox" name="iphone3gs2" value="69"> LCD Danificado 3GS<br />
    <input onclick="clickCh(this);KeepCount();" type="checkbox" name="iphone3gs3" value="89"> Substituir capa traseira 3GS<br />
    <input onclick="clickCh(this);KeepCount();" type="checkbox" name="iphone3gs4" value="45"> Botão Volume3GS

    </form>
    </div>
            <div id="three" class="hiddenDiv">

            <div class="image">
                <img class="large" src="images/iphone4.png" alt="iphone3g" width="141" height="141" />
            </div>
    <form name="iphone4">
    <input onclick="clickCh(this);KeepCount();" type="checkbox" name="iphone41" value="169"> Vidro/LCD Partido<br />
    <input onclick="clickCh(this);KeepCount();" type="checkbox" name="iphone42" value="99"> Substituir capa traseira<br />
    <input onclick="clickCh(this);KeepCount();" type="checkbox" name="iphone43" value="79"> Botão Volume<br />
    <input onclick="clickCh(this);KeepCount();" type="checkbox" name="iphone44" value="76"> Botão Home

    </form>
    </div>

У меня есть более 3 из них, что я могу сделать, чтобы решить вопрос? мне нужно отправить эти данные в файл php.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2011

Используя jQuery, это можно сделать очень кратко.

// select all checked checkboxes with name attribute that starts with 'iphone'
var NewCount = $("input[name^='iphone']:checked").length;

if (NewCount > 1){
    descontox = 20/100;
    valorx = (total.value * descontox).toFixed(2);
    valor.value  = (total.value - valorx).toFixed(2);
    }

if (NewCount <= 1){
    valor.value = ("");}
}

РЕДАКТИРОВАТЬ: souza - По вашим комментариям кажется, что вы уже решили проблему, используя один элемент формы.Тем не менее, было бы разумно использовать более общий подход, такой как приведенный выше, или тот, который опубликовал mrtsherman.Проверка каждого отдельного элемента ввода по имени приведет к кошмару обслуживания кода.

Это потребует обновления как вашей разметки, так и вашего javascript каждый раз, когда появляется новая версия iPhone и / или носитель, платформа.Более общий подход позволит вам просто добавить новый флажок в разметку, используя то же соглашение об именах, и ваш javascript будет просто обрабатывать его без необходимости вносить какие-либо изменения в код.

0 голосов
/ 23 февраля 2011

Используйте Jquery.Легко использовать для чего-то вроде этого.Вот jsfiddle с ним работает.

$(document).ready(function() {
   $("input:checkbox").click(function() {
      var checked = $("input:checked").length;
      alert(checked);
   });
});
...