JavaScript - Ayuda para cambiar el valor de un checkbox de on a 1 ó 0

 
Vista:
sin imagen de perfil
Val: 37
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Ayuda para cambiar el valor de un checkbox de on a 1 ó 0

Publicado por Pepe (13 intervenciones) el 16/10/2020 09:49:09
Hola buenas, estoy teniendo problemas para cambiar el valor de un check box a la hora de enviarlo al servidor.
Tengo unos inputs que se crean de forma dinámica al pulsar un boton.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<form method="POST"  id="myForm" action="<?php echo base_url(); ?>controlador/cambiarValor">
        <button class=mybtn id="mybtn" onclick="insertarInputs()" type="button" aria-label="">+</button>
        <p>Nombre: <input type="text" name="nombre" id="nombre"></p>
        <p class="parrafo">Check<input type="checkbox" onclick="changeValue(this)"  name="mycheckbox[]"></p>
        <button type="submit" name="Enviar">Enviar</button>
    </form>
 
var myForm = document.getElementById("myForm");
 
 function insertarInputs() {
 
            var input = ' <p>Nombre: <input type="text" name="nombre" id="nombre"></p> <p class="">Check<input type="checkbox" name="mycheckbox[]"</p>';
            myForm.insertAdjacentHTML("beforeend", input);
        }
 
var listcheckBox = document.querySelectorAll("input [type= 'checkbox']");
 
            listcheckBox.forEach(checkBox=>{
                var isChecked = checkBox.checked;
                alert(listcheckBox);
                var valorCheck = checkBox.value;
                if(checkBox.checked){
                    checkBox.value='1';
                }else{
                    checkBox.value='0';
                }
 
//Intente hacer esto pero solo se ejecuta cuando se pulsa en el check box y si no lo pulsas no se ejecuta y no se cambia el valor
 function changeValue(elemento){
            // elemento.addEventListener('click', function(){
                elemento.value= "";
                if(elemento.value!=''){
                    elemento.value = "1";
            }else{
                elemento.value= "0";
            }
            // })
 
        }
 
/CONTROLADOR
 
public function cambiarValor()
	{
		$checbox = $this->input->post("mycheckbox");
		$nombre = $this->input->post("nombre");
 
		$datos = array( 'Nombre' => $nombre ,'CheckBox' => $checbox);
		var_dump($datos);
	}

el problema que tengo es que necesito cambiar el valor del checkbox cuando no está marcado, cuando se lo mando al servidor, si tengo 2 checkbox uno marcado y otro no, solo me llega el marcado con un on, y el no marcado me lo borra, es decir que recibo solo 1 valor, y me da error, en el servidor.
Si alguien me pudiera ayudar a sacar esto, que seguro es una simplicidad, pero no sé cómo hacerlo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 37
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Ayuda para cambiar el valor de un checkbox de on a 1 ó 0

Publicado por Pepe (13 intervenciones) el 16/10/2020 11:52:52
Bueno conseguí hacer algo como esto pero con jquery

Pero a la hora de recoger estos datos en el servidor, cuando un checkBox no está marcado me poner a un null o cun '" y cuando no está marcado me lo quitar, es decir, que si envío dos input nombre y dos check uno sin marcar y el otro marcado el array de inputs sale asi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$datos = array(  nombre => 'prueba1', mycheckbox='',
nombre=> 'prueba2', ), y me dá error.
 
        $("#myForm").submit(function(e) {
        let listcheckBox = $("input[ type='checkbox']");
        console.log(listcheckBox);
        listcheckBox.each(function() {
            //return alert(this.value = this.checked ? 1 : 2);
            // console.log(this.checked);
            // console.log(this.value)
            if (this.checked) {
                this.value = 1;
 
            } else {
                this.value = 2;
 
            }
            //alert(this.value);
        });
 
    })
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar