Ich weiß, es ist ein altes Thema, aber es ist erst in der Google-Suche und die Antwort ist nicht ganz richtig ...
Zum Beispiel, wenn Sie versuchen, in der Konsole $('#myinput').val()
sollten Sie den Wert von #myinput erhalten.
Aber wenn Sie $('#myinput').val(undefined)
tun sollten Sie den Wert von #myinput gesetzt! ( Mit der aktuellen Antwort und die Kommentare von ihm, werden Sie nicht den Wert von #myinput eingestellt)
Hier ist eine verbesserte Antwort, die Verwenden Sie 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);
, wenn Sie die Argumente alle
(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);
ich helfen können auch sie hoffen gelten passieren!
Ich nehme an, dass das Ereignis .change() für Sie hier nicht funktioniert? –
@Mark: Wenn ich den Wert von Elementen durch $ ('# foo') .val ('someValue') setze, wird das .change() Ereignis nicht ausgelöst. Es scheint nur ausgelöst zu werden, wenn der Wert vom Benutzer auf der GUI/Browser geändert wird. – 7wp
$ ('# foo'). Val ('someValue'). Trigger ('change'); könnte nützlich sein, um den Trigger in dort dann zu ketten ... –