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?
Preluare valoare Checkbox in Javascript
-
- Mesaje:430
Preluare valoare Checkbox in Javascript
MarPlo
Mesaje:4343
Vezi exemplu de la pagina: Get the value of the selected /checked checkboxes.
Daca checkbox-urile nu sunt intr-un <form>, in loc de:
Poti folosi elementul parinte cu iD-ul lui:
- Te poti inspira din acel exemplu si modifici functia SelectedChbox() sa returneze ce ai nevoie.
Daca checkbox-urile nu sunt intr-un <form>, in loc de:
Cod: Selectaţi tot
getSelectedChbox(this.form);
Cod: Selectaţi tot
getSelectedChbox(document.getElementById('id_tabel'));
andras
Mesaje:430
Salut,
Eu am nevoie de datele din toate coloanele tabelului (t_draggable1), asa ca folosesc Ajax() care arata asa:
Problema la mine este ca prima coloana din tabela fiind <input type="checkbox">, in fisierul muta1.php dupa:
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.
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>
Cod: Selectaţi tot
$tablouphp= json_decode($_REQUEST['tablouc1']);
echo var_dump($tablouphp);
MarPlo
Mesaje:4343
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:
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 : '';
andras
Mesaje:430
Salut,
Am incercat sa fac asa dar ceva nu merge. In <td> am pus:
Iar in functia JQuery am pus:
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?
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>
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>
MarPlo
Mesaje:4343
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").
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").
andras
Mesaje:430
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!