2010-04-06 29 views
14

Tengo dos formularios, uno con un botón de opción que los usuarios deben seleccionar para editar.Cómo desmarcar un botón de opción

[form name="A"] 
<li>[input type="radio" name="BookItem" value="1" /]</li> 
<li>[input type="radio" name="BookItem" value="2" /]</li> 
<li>[input type="radio" name="BookItem" value="3" /]</li> 
[form]<p> 

Después de "BookItem" se selecciona de forma (A) I llamar a la función $("#EditFormWrapper").load("callEditData.cfm? ID="+ID); para cargar la segunda forma (B)

<div id="EditFormWrapper"><div></p> 
<!---// begin dynamic form generated by external file callEditData.cfm //---> 
[form id="editForm" name="B"] 
<ul class="hourswrapper"> 
<li><input type="checkbox" id="TOR2Hours" class="TOR2Hours" name="TOR2Hours" value="AM2Hrs1" /> 2 Hours AM</li> 
<li><input type="checkbox" id="TOR2Hours" class="TOR2Hours" name="TOR2Hours" value="PM2Hrs1" /> 2 Hours PM</li> 
<li><input type="checkbox" id="TOR2Hours" class="TOR2Hours" name="TOR2Hours" value="AM2Hrs2" /> 2 Hours AM</li> 
<li><input type="checkbox" id="TOR2Hours" class="TOR2Hours" name="TOR2Hours" value="PM2Hrs2" /> 2 Hours PM</li> 
</ul> 
[input type="image" src="images/submit-btn.gif" id="addBTN" name="addBTN" class="buttons" alt="SubmitRrequest" /] 
[input type="image" src="images/cancel-btn.gif" id="editBTNcancel" name="editBTNcancel" class="buttons" alt="Cancel Request" /] 
[/form] 
<!---// end dynamic form from external file //---> 

Quiero desactive el botón de radio en la forma (A) cuando el usuario hace clic en el botón cancelar (editBTNcancel) en el formulario (B).

Aquí está mi script:

$("#editBTNcancel").live("click", function(event){ 
    event.preventDefault(); 
    $("#EditFormWrapper").slideUp("fast").empty(); 
    //$('.TOR2Hours').removeAttr('checked'); 
    $('.TOR2Hours').attr('checked', false); 
}); 

espero afirmar claramente mi problema, cualquier sugerencia sería muy apreciada!

+0

puede publicar el HTML que contiene los botones de opción. '.removeAttr ('checked')' y '.attr ('checked', false)' ambos funcionan para mí. http://jsfiddle.net/JAEsd/ también, ¿en qué navegador estás probando estos? – Anurag

+0

Vuelva a publicar su código como HTML, no como código BB –

+0

'$ (radio) .attr ('verificado', falso)' es correcto y funciona para mí. ¿Estás seguro de que estás seleccionando los elementos correctos? No veo 'class =" TOR2Hours "' en sus radios. – bobince

Respuesta

6

No estoy seguro exactamente de lo que quiere, pero puede intentar usar una entrada de reinicio.

<input type='reset' /> 
+0

totalmente de acuerdo, o como respondí no un control, pero 'reset' evento – vittore

+0

gracias por su respuesta, pero el botón de opción no está en la misma forma así que esto no lo haría no funciona – user281867

+4

@ user281867: call 'reset' para el formulario en el que aparecen los botones de opción.' Document.getElementById ("radiobuttonsform"). Reset(); ' – vittore

2

En vista de que esto es prácticamente el más fácil de tareas DOM existe y funciona en todos los navegadores de secuencias de comandos, no se sugiere emplear los métodos de jQuery para ello:

$(".TOR2Hours")[0].checked = false; 

La otra cosa que ocurs para mí es si su selector es correcto. ¿Quiso seleccionar un conjunto de elementos por clase o debería ser un selector de ID?

0

Acabo de descubrir una gran solución a este problema.

Asumiendo que tiene dos radios que necesitan para poder ser comprobados y/o sin control, aplicar este código y cambiar lo que sea necesario:

var gift_click = 0; 
    function HandleGiftClick() { 
     if (document.getElementById('LeftPanelContent_giftDeed2').checked == true) { 
      gift_click++; 
      memorial_click = 0; 
     } 
     if (gift_click % 2 == 0) {document.getElementById('LeftPanelContent_giftDeed2').checked = false; } 
    } 
    var memorial_click = 0; 
    function HandleMemorialClick() {   
     if (document.getElementById('LeftPanelContent_memorialDeed2').checked == true) { 
      memorial_click++; 
      gift_click = 0; 
     } 
     if (memorial_click % 2 == 0) { document.getElementById('LeftPanelContent_memorialDeed2').checked = false; } 
    } 

:) su bienvenida

+0

No sé POR QUÉ esta respuesta fue -1. Esto está más cerca de una respuesta aceptable porque ** aborda la parte más difícil de desmarcar una entrada de radio: LA SECUENCIA DE EVENTO **. Todos deberían conocer la propiedad obvia de 'verificación' - REALMENTE, es posible que ni siquiera te importe esto, dependiendo de qué marco estés usando. ** El problema es ** que cuando recibe un evento, por ejemplo, un clic, cuando desmarca la radio *, siempre puede mostrar 'checked === true' *. Esta puede ser la respuesta más bien pensada aquí, de lejos. – Cody

10

se puede acceder a la forma como tal. ..

var exampleForm = document.forms['form_name']; 

entonces bucle a través de la forma

for(var i=0; i<exampleForm.length; i++){ 
    alert(exampleForm[i].type); 
} 

puede probar para comprobar así ...

if(exampleForm[i].checked) 

para deseleccionar el botón de radio comprobado tratar ...

exampleForm[i].checked=false; 

el código final se vería así ...

var exampleForm = document.forms['form_name']; 
for(var i=0; i<exampleForm.length; i++){ 
    if(exampleForm[i].type) == 'radio' && exampleForm[i].checked == true){ 
     exampleForm[i].checked = false; 
    } 
} 
+0

Su primer fragmento de código debe decir 'document' en lugar de' documents'. Buena respuesta, sin embargo. – RustyTheBoyRobot

+0

¿Hay alguna manera de saber si una radio ha sido * deseleccionada *? He trabajado en frameworks durante tanto tiempo ... solo me di cuenta de que 'onchange' es en realidad' onchangedtotrue' ... Si tuviera oyentes en cada radio de un grupo, para obtener el botón seleccionado, ¿no deberían hacerlo todos los demás oyentes? en ese grupo disparar con 'event.target.checked === false' cada vez que se selecciona uno nuevo? Así es como funcionan las casillas de verificación, ¿verdad? – Cody

0

Utilizo esta forma para resolver su problema en ASP.net, verifique esto ...

radioButton.InputAttributes["show"] = "false"; 
string clickJs = " if(this.show =='true'){this.show ='false'; this.checked = false;}else{this.show='true'; this.checked = true;};"; 

radioButton.Attributes["onClick"] = clickJs; 

En asp.net, puede usar esta forma para agregar un atributo. ¡Y también puede agregar un atributo manualmente al radioButton, y hacer la función (clickJs) para cambiar los atributos de ckecked!

1

Su selector es simplemente incorrecto. Si desea desactivar el botón de radio desde el primer formulario que debe utilizar $('input[name="BookItem"]') y no $('.TOR2Hours'):

$("#editBTNcancel").on("click", function(event){ $("#EditFormWrapper").slideUp("fast").empty(); $('input[name="BookItem"]').attr('checked', false); });

Por lo que el método a utilizar para desactivar los botones de radio, los 3 métodos siguientes debería funcionar:

  1. $('input[name="BookItem"]').attr('checked', false);
  2. $('input[name="BookItem"]').removeAttr('checked');
  3. $('input[name="BookItem"]').prop('checked', false);

Sin embargo, echa un vistazo a documentos de jQuery en jQuery prop() por la diferencia entre attr() y prop().

Cuestiones relacionadas