Pagina 1 din 1

Preluare valoare Checkbox in Javascript

Scris: Joi Ian 22, 2015
de andras
Salut,
Am checkbox-uri intr-o tabela html (nu sunt in <form>). Vreau ca la actionarea unui buton sa le identific pe cele bifate si sa le duc intr-o baza de date. Folosesc Ajax(), sau exista o metoda mai simpla?

Checkbox-uri cu nume necunoscut

Scris: Joi Ian 22, 2015
de MarPlo
Vezi exemplu de la pagina: Get the value of the selected /checked checkboxes.
Daca checkbox-urile nu sunt intr-un <form>, in loc de:

Cod: Selectaţi tot

getSelectedChbox(this.form);
Poti folosi elementul parinte cu iD-ul lui:

Cod: Selectaţi tot

getSelectedChbox(document.getElementById('id_tabel'));
- Te poti inspira din acel exemplu si modifici functia SelectedChbox() sa returneze ce ai nevoie.

Checkbox-uri cu nume necunoscut

Scris: Joi Ian 22, 2015
de andras
Salut,
Eu am nevoie de datele din toate coloanele tabelului (t_draggable1), asa ca folosesc Ajax() care arata asa:

Cod: Selectaţi tot

<script type="text/javascript">
$(document).ready(function() {
  $('#sc1').click(function() {

         var get_table_tds = getTableData('t_draggable1');   
        var json_sr_tds = JSON.stringify(get_table_tds);    // JSON string with table data

           function getTableData(id) {
                // function to get table cells data (from: https://coursesweb.net/ )
                // receives table ID. Returns 2 dimensional array with TD data in each row
                var t_rows = document.getElementById(id).querySelectorAll('tbody tr');    // rows from tbody
                var t_data = [];    // will store data from each TD of each row
                var ix = 0;    // index of rows in t_data

                // gets and dds td data in t_data
                for(var i=0; i<t_rows.length; i++) {
                    var row_tds = t_rows[i].querySelectorAll('td');
                    if(row_tds.length > 0) {
                        t_data[ix] = [];
                        for(var i2=0; i2<row_tds.length; i2++)
                            t_data[ix].push((row_tds[i2].innerText || row_tds[i2].textContent));
                        ix++;
                    }
                }
                return t_data;
            }
             var data_jsonc1={"tablouc1":json_sr_tds };
            my_ajaxc1("muta1.php",data_jsonc1,"post");
                    function my_ajaxc1(phpfile, data_jsonc1, type) {  // muta in lista1
                $.ajax({
                    async:false,
                    type: type,
                    url: phpfile,
                    data: data_jsonc1,
                    success: function(msgc1) {
                            alert(msgc1);        
                    },
                    error: function(jqXHR, exception) {
                        if (jqXHR.status === 0) {
                            alert('Not connect.\n Verify Network.');
                        } 
                    }
                });
                //    window.location.href='com?';  
  }
});    
});   
 </script>
Problema la mine este ca prima coloana din tabela fiind <input type="checkbox">, in fisierul muta1.php dupa:

Cod: Selectaţi tot

$tablouphp= json_decode($_REQUEST['tablouc1']);
echo var_dump($tablouphp); 
Nu imi apare nici o valoare corespunzatoare lui checkbox, imi apare ceva de genul: [0]=>string(0)"" , deci n-a preluat nimic desi checkbox-ul este bifat in tabela. Restul datelor apar normal. Cum atribui o valoare la checkbox cind bifez in tabela? Multumesc.

Checkbox-uri cu nume necunoscut

Scris: Joi Ian 22, 2015
de MarPlo
Valoarea la checkbox se adauga in attributul lui "value".
Incearca asa, adauga un id la acel checkbox, iar in codul javascript se preia valoarea daca e bifat astfel:

Cod: Selectaţi tot

var chkbox = (document.getElementById('idul').checked == true) ? document.getElementById('idul').value : '';

Checkbox-uri cu nume necunoscut

Scris: Vin Ian 23, 2015
de andras
Salut,
Am incercat sa fac asa dar ceva nu merge. In <td> am pus:

Cod: Selectaţi tot

<td  style="width:30px; height: 40px; text-align:center; border-style:outset;">
<input type="checkbox" id="c<?php echo trim($i); ?>"  onchange="if (this.checked) {this.parentNode.style.background='#ef4d35'; this.value='1'; } else {this.parentNode.style.background='white';this.value='0';}"  style="font-size: 300%;" ></td>
Iar in functia JQuery am pus:

Cod: Selectaţi tot

<script type="text/javascript">
$(document).ready(function() {
$('#sc1').click(function() {

var get_table_tds = getTableData('t_draggable1');
var json_sr_tds = JSON.stringify(get_table_tds);    // JSON string with table data
alert(json_sr_tds);   // acest alert nu merge pentru ca este dupa iesirea din functia getTableData()
function getTableData(id) {
    var t_rows = document.getElementById(id).querySelectorAll('tbody tr');
    var t_data = [];
    var ix = 0;
    var chkbox ='';
    for (var i = 0; i < t_rows.length; i++) {
   chkbox = (document.getElementById('c'+i).checked==true) ? document.getElementById('c'+i).value : '';    
    alert(chkbox);  // acest alert merge (afiseaza '1' sau '')
    alert(document.getElementById('c'+i).id);  // acest alert merge (afiseaza c0, c1, c2, c3 etc). Este ultimul alert care merge
    var row_tds = t_rows[i].querySelectorAll('td');
    if (row_tds.length > 0) {
	   t_data[ix] = [];
t_data[ix].push(chkbox);   // aici incerc sa pun valoarea checkbox-ului. 
	   for (var i2 = 0; i2 < row_tds.length; i2++)   // si restul datelor din row
			 t_data[ix].push(row_tds[i2].innerText || row_tds[i2].textContent);
	   ix++;
	}
	}
		return t_data;
}
var data_jsonc1 = {"tablouc1" : json_sr_tds};
my_ajaxc1("muta1.php", data_jsonc1, "post");
function my_ajaxc1(phpfile, data_jsonc1, type) {// muta in lista1
$.ajax({
    async : false,
    type : type,
    url : phpfile,
    data : data_jsonc1,
    success : function(msgc1) {
        alert(msgc1);
},
    error : function(jqXHR, exception) {
        if (jqXHR.status === 0) {
            alert('Not connect.\n Verify Network.');
        }
    }
});
//    window.location.href='com?';
}
});   
});
</script>
Nu mai ajunge la functia ajax, se impiedica undeva in functia getTableData(id) in bucla. Daca in aceasta functie sterg definirea variabilei chkbox toate alert-urile functioneaza normal. Care sa fie cauza?

Preluare valoare Checkbox in Javascript

Scris: Vin Ian 23, 2015
de MarPlo
Incearca sa scoti t_data[ix] = []; din bucla for(), sa fie inainte. Poti verifica si ce returneaza functia getTableData() (la apelarea ei).
In rest nu stiu daca e alta cauza, cam mult cod de verificat care nici nu poate fi testat.
Totusi ceea ce vrei sa obtii poate fi mai complicat decat pare, fiindca in php e nevoie si de numele campului trimis impreuna cu valoarea lui, pentru asta, la functyia ajax trebuie adaugat si numele ("nume=valoare", sau obiect JSON cu elemente "nume: valoare").

Preluare valoare Checkbox in Javascript

Scris: Vin Ian 23, 2015
de andras
Am rezolvat-o pana la urma. Am disecat fiecare cuvint din cod si era o neconcordanta intre indici (i, ix, i2) foarte greu de observat. Am trimis prin ajax() un array cu toate valorile din tabelul html. Acum functioneaza. Multumesc!