Sé que es un tema viejo, pero está por primera vez en Búsqueda de Google y la respuesta no es del todo correcto ...
Por ejemplo, si intenta en la consola $('#myinput').val()
, debería obtener el valor de #myinput.
Pero si lo hace $('#myinput').val(undefined)
debe establecer el valor de #myinput! ( Con la respuesta actual y los comentarios de la misma, no se establece el valor de #myinput)
Aquí es una respuesta mejorada que use arguments
.
(function ($) {
var originalVal = $.fn.val;
$.fn.val = function(value) {
if (arguments.length >= 1) {
// setter invoked, do processing
return originalVal.call(this, value);
}
//getter invoked do processing
return originalVal.call(this);
};
})(jQuery);
si quieres pasar todos los argumentos también se puede utilizar aplica
(function ($) {
var originalVal = $.fn.val;
$.fn.val = function(value) {
if (arguments.length >= 1) {
// setter invoked, do processing
} else {
//getter invoked do processing
}
return originalVal.apply(this, arguments);
};
})(jQuery);
espero que ayude!
Supongo que el evento .change() no funciona para usted aquí. –
@Mark: Cuando establezco el valor de los elementos haciendo $ ('# foo'). Val ('someValue') el evento .change() no se desencadena. Solo parece activarse cuando el usuario cambia el valor en la GUI/navegador. – 7wp
$ ('# foo'). Val ('someValue'). Trigger ('cambio'); podría ser útil para encadenar el gatillo allí entonces ... –