Issue: 7, el texto de un elemento de botón se devuelve en jQuery usando .val() o .attr ('value'), en lugar del botón real valor. Este es un problema conocido y también ocurre con Javascript directo usando .value. Hubo una discusión anterior sobre el mismo aquí:Utilizando jQuery para superar IE Button Valor Error
Retrieve Button value with jQuery
sino una solución total aceptable nunca fue encontrado (sólo un corte en el texto del botón se oculta temporalmente).
He estado trabajando en una solución total para que cada vez que se acceda al valor de un botón (ya sea en el envío del formulario o simplemente usando jQuery/Javascript), se devuelva el valor correcto. Lo tengo trabajando con .val() con el siguiente código. Estoy buscando ayuda para hacerlo funcionar también con .attr ('valor'), e incluso con Javascript .value si es posible.
He creado una página jsFiddle donde puede ser visto en acción aquí:
http://jsfiddle.net/hyperseer/RVyDN/2/
Código:
$(document).ready(function(){
$().iefixer();
});
(function($){
$.fn.iefixer = function(){
$.fn.origval = $.fn.val;
$.fn.val = function(value){
var elem = this[0];
if(value === undefined){
var returnVal = null;
if(elem.nodeName.toLowerCase() == 'button')
{
returnVal = elem.getAttributeNode("value").nodeValue;
} else {
returnVal = $(elem).origval();
}
return returnVal;
} else {
if(elem.nodeName.toLowerCase() == 'button')
{
elem.getAttributeNode("value").nodeValue = value;
} else {
$(elem).origval(value);
}
}
}
$('button').click(function() {
alert("$(this).val() = " + $(this).val()); // this works now with above fix
alert("$(this).attr('value') = " + $(this).attr('value')); // doesn't work
alert("this.value = " + this.value); // straight JS doesn't work
});
};
})(jQuery);
Entonces, ¿cuál es la pregunta? –
Necesitarás responder la pregunta tú mismo o cerrarla, ya que ahora está resuelta, es perder tiempo de gente que la lee con la intención de responderla. – Blowsie
Para su información, la función '.val()' en jQuery 1.6+ tiene una solución para este error y ahora debería funcionar como se espera para IE6/7 (consulte [Ticket # 1954] (http://bugs.jquery.com/ticket/1954)). –