Tekniği dinamik javascript ve php formları karıştırma, mutiple onay kutularını ayarlamak için

2 Cevap php

Ben javascript yeniyim, benim sorunum etkili olduğu: Birden fazla işlem blokları veya bölümleri ile tek bir form, onay kutularını bir grup ile her üreten bir php sayfası var

örneğin

<form action='./this.php' method='POST'>
One<br>
<input type='checkbox' name='one[part1]'>a<br>
<input type='checkbox' name='one[part2]'>b<br>
<input type='checkbox' name='one[part3]'>c<br>

<input type='checkbox' name='one[all]'>all<br>
<br>
Two<br>
<input type='checkbox' name='two[part1]'>a<br>
<input type='checkbox' name='two[part2]'>b<br>
<input type='checkbox' name='two[part3]'>c<br>

<input type='checkbox' name='two[all]'>all<br>

<input type='submit'>
</form>

Örnek problem: Ben, iki [bütün] onay kutusunu tıklatın ve iki [part1] sahip olmak isteyen iki [part2], ve iki [Part3] tüm kontrol olmak.

Ben gruptaki tüm onay kutularını aynı adlandırırsanız, php sonrası değeri yalnızca biri için gösterilir, bu yüzden farklı isimler tutmak gerekir.

Kısa dinamik (php) her bölüm için ayrı onclick fonksiyonları üretmek Bunu yapmak için herhangi basit bir yöntem var mı.

Bazen one.part1 kontrol için geçerli olmayabilir ama onun bilgi gösterilir ve onay kutusunu isimleri itibaren b itibaren başlayacak, tüm bölümleri aynı olacaktır, unutmayın.

Ya da belki bir başlangıç ​​işareti sonra ve tüm kontrol önce tüm onay kutularını bulmak için DOM geçme.

Umarım yeterince açıktır.

2 Cevap

Siz grup adı bir parametre alır bir javascript onClickAll işlev gerekir. Daha sonra her onay kutusunu döngü getElementsByName tarafından döndürülen ve onları kontrolsüz / kontrol işaretleyebilirsiniz. Postback üzerinde, kullanılan grup adı ile onay kutularını için değerleri bir dizi alacak. Döngü ile, sizi kontrol hangi bilmek ve hangi değildi.

Ben bazı örnek kod yazmak istiyorum ama ben daha iyi birisi bunu onun daha iyi PHP / JavaScript çalıştık beri bir süre düşünüyorum olmuştur ki. Ama ben sana ne gerekir bunun özü. İyi şanslar!

Gibi daha fazla olması için formu değiştirildi:

<input type='checkbox' name='section[one][]' value='part1'>a<br>
<input type='checkbox' name='section[one][]' value='part2'>b<br>
<input type='checkbox' name='section[one][]' value='part3'>c<br>

<input type='checkbox' name='one[all]' onclick='checkAll(one,this)>all<br>

Checkall fonksiyonu oldu:

function checkAll(checkid, exby) {
    boxes = document.getElementsByName('section[' + checkid + '][]');
    for (i = 0; i < boxes.length; i++){
    	boxes[i].checked = exby.checked? true:false
    }
}

Bu bir tekil isim yerken hala php sonrası var içinde yönetilebilir dizi vererek biter.