2010-03-21 6 views
6

De acuerdo, intento cambiar el estado de una casilla de verificación programáticamente en dashcode. He intentado:Cambiar el estado de una casilla de verificación programáticamente en dashcode

var checkbox = document.getElementById("checkbox"); 

// I have tried all the following methods. 
checkbox.checked = false; 
checkbox.selected = false; 
checkbox.value = false; 
+0

puede usar checkbox.checked = false pero no use setAttribute (' checked ',' checked ') , Puede parecer que funciona, pero falla si ha hecho clic en la casilla manualmente y luego intenta marcar o desmarcar usando setAttribute ('checked', 'checked') o removeAttribute ('checked') – jforjs

+0

consulte mi publicación reciente para esto, http : //jforjs.com/setattribute-removeattribute-checkbox/ – jforjs

Respuesta

0

Tal vez:

checkbox.checked = "checked"; 

continuación:

checkbox.checked = "unchecked"; 
+0

Acabo de probar eso, tampoco funciona – Daniel

+0

OK. No tengo experiencia con Dashcode, pero parece que es HTML. :) Esperemos que alguien con más experiencia lo haga ser capaz de ayudarlo aquí. –

2
checkbox.setAttribute("checked", "checked"); // set 
checkBox.removeAttribute("checked"); // remove 
+0

No, eso tampoco funciona – Daniel

13

Widgets sólo correr en las tecnologías de WebKit, por lo que el código válido para Safari también debería ser válido en Dashcode. Cualquiera de los siguientes debería funcionar:

checkbox.checked = true; 
checkbox.setAttribute("checked", "true"); 

El hecho de que no funcionen indica que hay un problema en otro lugar de su código. Me gustaría comprobar la línea

var checkbox = document.getElementById("checkbox");  

asigna correctamente un elemento a la variable checkbox. Además, verifique que el ID de su elemento "casilla de verificación" sea válido y correcto (no es un duplicado, no tiene un error tipográfico, etc.).

+0

Sí, he pensado que podría ser eso, pero he comprobado cuádruple, la identificación es "casilla de verificación" y el código es casilla de verificación = document.getElementById ("casilla de verificación"); No recibo ningún error en el tiempo de ejecución. Lo estoy ejecutando en una presentación de pila, ¿eso cambiaría algo? – Daniel

+0

Esta es la respuesta, particularmente la primera versión (no es necesario ir a ningún lado). Si configurar la propiedad 'checked' no funciona, entonces la falla está en otra parte. –

+0

Acabo de ejecutar una prueba, está configurando la propiedad marcada, sin embargo, no actualiza la casilla de verificación. Además, a través de algunas pruebas más, inicialmente dice que la variable marcada no está definida. – Daniel

5

Esta pregunta tiene un mes de antigüedad cuando escribo esta respuesta. Probablemente ya se haya resuelto, pero en cualquier caso me gustaría añadir que si está usando Dashcode, la parte de Checkbox es un div que contiene una etiqueta y una entrada, esta es la casilla de verificación "real".

Si inspecciona el html mientras está cargado en Safari, notará que "checkbox" es el tipo del elemento.

Por lo tanto la forma correcta de cambiar el estado de la casilla de verificación sería, en el supuesto de "entrada" es su id (que podría tener un número predeterminado adjunta embargo):

document.getElementById("input").checked="true"; 

o el método que desea utilizar .

El punto principal aquí es que intentabas cambiar el estado de otro div.

Espero que ayude!

+0

Esto es correcto. Probablemente el OP intente cambiar el estado del elemento DIV padre a 'marcado'. – mclaughlinj

1

No sé qué navegador usaste, pero cuando lo probé en FF 3.6, funciona. a ponerlo de esta manera:

checkbox.checked = false; 

mientras:

checkbox = document.getElementById('blablabla'); 

o escribir así

document.getElementById('idhere').checked = false; 
1

Esta pregunta ha sido por mucho tiempo. De todos modos, lo siguiente funciona para nosotros:

checkbox.childNodes [1] .checked = true; checkBox.childNodes [1] .checked = false;

Como se señaló en una respuesta anterior, la forma en que Dashcode crea estos controles necesita pasar el envoltorio div, que tiene el ID real (casilla de verificación en este ejemplo) y establecer la propiedad para la entrada, que es nodo hijo 1.

Buscar la 'id' real de la entrada sería problemático ya que no tiene control sobre qué identificadores están asignados al nodo. Por ejemplo, si tiene dos casillas de verificación, la primera tendría 'entrada' como identificación para el nodo hijo 1 y la segunda 'entrada1', a menos que, de fuente, haya utilizado 'entrada' o 'entrada1' como una identificación en alguna parte ¡Tu diseño ya!

Puede haber otro método pero aún no lo he encontrado.

0
cell = row.insertCell(-1); 
sel = document.createElement('input'); 
sel.setAttribute("type", "checkbox") 
sel.setAttribute("name", "myCheckBox") 
cell.appendChild(sel); 
cell.getElementsByTagName('input')[0].checked = true; 

Creo una tabla, una fila y luego una celda y creo una casilla dentro de ella. Puedo agarrar el primer objeto de entrada y establecer el estado verificado en verdadero.

0

var checkbox = document.getElementById ("casilla de verificación"); hay un problema con esta línea, debe ser var checkbox = document.getElementById ('# checkbox ");

Cuestiones relacionadas