Wstawianie tekstu do input, wywołanie eventu

0

Witam, chciałem sobie ułatwić pewną czynność, robiąc skrypt do greasemonkey.

$('#kod').val('25');

$('#kod').keyup();
$('#kod').valid(); 

O co chodzi- ten kod działa, wstawia 25, ale do każdego inputa jest walidacja, która sprawdza wprowadzony tekst. Po wprowadzeniu tekstu przez mojego 'bota' próbowałem to jakoś wywołać, jednak wygląda jak by tego mojego '25' nie było (jest tylko wizualnie). Dopiero jak np ręcznie dopisze w textboxie np 7 wtedy sprawdza i jest ok. (mam 257)

Co zrobić, żeby skrypt sprawdzający na stronie 'widział' to co wpisuje mój skrypt?

1

Zwykłe keyup() nie rozpozna zmian w drzewie DOM, $('#kod').val(25); jest pewną zmianą. Spróbuj zamienić keyup na
$('body').on('keyup', '#kod', function(){})

1

Czemu używasz valid() (co zakładam ma wykonać walidację pola), skoro wcześniej symulujesz keyup?

@.Al Są dwie opcje (biorąc pod uwagę, że używasz powyższego kodu zarówno z keyup() jak i valid()):
a) walidacja nie wykonuje się na valid(), dodatkowo nie wykonuje się na keyup tylko np. keydown (co jest błędem), ew. keypress
b) skrypt walidacji bazuje ślepo na pobraniu wartości atrybutu HTML value, a nie na faktycznej wartości inputa (bo te mogą być różne) - ale to oznaczałoby, że skrypt jest do natychmiastowej wymiany

Spróbuj dwóch rozwiązań:

$('#kod').val('25').keyup().keydown().keypress().change().valid(); // pomoże na przypadek A
$('#kod').attr('value', '25').keyup().valid(); // pomoże na B

I powiedz czy któreś pomogło.

0

Nie pomogło. Z tego co zauważyłem w kodzie jest sprawdzane co zostało wciśnięte, przeczytałem że keyup jest readonly i zwraca 0 więc nie przechodzi dalej. Symulowałem wciśnięcie przycisku dowolnego ale nie działało.

var e = jQuery.Event("keyup"); // or keypress/keydown
    e.keyCode = 27; // for Esc
    $(document).trigger(e); // trigger it on document

więc jednak obejdę to sprawdzanie..

$( "#btn" ).click(function() {
		$( "#Form" ).submit();
	});

1 użytkowników online, w tym zalogowanych: 0, gości: 1