¿Es posible identificar si el valor del botón de opción no ha cambiado?

Actualmente estoy tratando de cambiar el mensaje de confirmación del botón de enviar en el botón cambiado, y no quiero ningún mensaje si el valor no ha cambiado. Tengo algo como esto ahora:

$('input[type="radio"]').change(function() {
    var selected = $('input:checked[type="radio"]').val();
    if(selected == 'true') {
       $("#submit_button").data("confirm", "foo");
    } else if(selected == 'false') {
        $('#fee').hide();
        $("#submit_button").data("confirm", "bar");
    }

Esto cambiará el mensaje de confirmación a foo si el botón seleccionado es verdadero y la barra si el botón seleccionado es falso. Sin embargo, ¿qué sucede si no quiero devolver nada (sin mensaje), si el botón de opción predeterminado es verdadero y si seleccionado es verdadero?

-1
pyfl88 11 may. 2016 a las 16:45

3 respuestas

La mejor respuesta

Puede iniciar una variable fuera del evento:

var radioChanged = 0;

Y, en su caso, aumente:

$(':radio').change(function() {
    radioChanged += 1;
    // your code ...
});

Luego, más tarde:

if (radioChanged > 0) {
    alert('Change function occurred ' + radioChanged + ' times.');
} else {
    alert('Radio button not changed.');
}
1
Washington Guedes 11 may. 2016 a las 14:01

Según entiendo su comportamiento esperado, verifique si alguna radio ya no tiene su valor marcado predeterminado:

$('form').on('submit', function() {
  var anyRadioChanged = !!$(this).find('input[type="radio"]').filter(function() {
    return $(this).is(':checked') != this.defaultChecked;
  }).length; // '!!' to get boolean but it doesn't really matter here

  if(anyRadioChanged) {
     // show message(???)
  }
})
1
A. Wolff 11 may. 2016 a las 14:12

Puede ocultar el elemento del mensaje simplemente agregando pantalla: ninguno o usar el método jquery hide

$('#someElementId').hide();

O

$('#someElementId').css("display","none")
0
odpro 11 may. 2016 a las 13:53