2010-07-25 29 views
14

Mam formularz, w którym użytkownik musi kliknąć łącze, wybrać użytkownika za pomocą okna podręcznego, które następnie wypełnia ukryte pole z identyfikatorem i polem wyświetlacza z nazwą użytkownika.jQuery - czy mogę zweryfikować wyłączone pole?

Pole wyświetlania jest ustawione jako wyłączone = "wyłączone", aby zmusić użytkownika do użycia wyskakującego okienka i nie wpisywać wartości w polu.

Muszę upewnić się, że użytkownik wybiera nazwę. Używam wtyczki do sprawdzania poprawności jQuery i Jorn.

Wykonanie polecenia: true w wyłączonym polu nie wydaje się być wyłączane, jeśli wartość jest pusta.

Wszelkie pomysły na rozwiązanie tego problemu?

+0

Jeśli mam pola s tylko na wyświetlaczu nie możesz po prostu wyłączyć identyfikatora ukrytego? Po co używać pola tekstowego tylko dla pola wyświetlanego. Po prostu użyj jQuery, aby napisać do span lub div. Użytkownik nie myśli, że może edytować tekst, a ty nie próbujesz potwierdzić czegoś, co nie powinno mieć znaczenia. – ahsteele

+0

Dlaczego nie zatwierdzić ukrytego pola, aby sprawdzić, czy ma w nim identyfikator? – Matt

Odpowiedz

27

Zamiast wyłączać tę funkcję, czy próbowałeś dokonać jej tylko do odczytu?

<input type="text" readonly="readonly" /> 

pamiętam z lat temu, że pola niepełnosprawne nie są przekazywane przez formach, a więc prawdopodobnie nie są sprawdzane

Oto W3C HTML4 Spec na ten temat.

+0

Doskonały !! Nie wiedziałem nawet, że istnieje tylko do odczytu. Czy jest on zgodny ze wszystkimi przeglądarkami? – Falantar014

1

dlaczego nie włączyć go tylko befor walidacji, a następnie wyłączyć go ponownie ... pomocą .attr('disabled','') aby ją włączyć, a następnie .attr('disabled','disabled'), aby ją wyłączyć ponownie stanie się to tak szybko przyzwyczajenie nawet zauważyć.

2

Według poprzedniej sugestii możliwe rozwiązanie mogłoby być:

var _valid = $.fn.valid; 
$.fn.valid = function (alsoDisabled) { 
    var alsoDisabled = alsoDisabled || false; 
    if (alsoDisabled) { 
     this.find('[disabled]').prop('disabled', false); 
    } 
    var retVal = _valid.apply(this); 
    if (alsoDisabled) { 
     this.find('[disabled]').prop('disabled', true); 
    } 
    return retVal; 
}; 


a więc można wywołać odpowiednią metodę z opcjonalnych argumentów: $('#form').valid(true) aby sprawdzić także pole niepełnosprawnej lub $('#form').valid() do normalnego zachowanie

pozdrawiam Gaetano

Powiązane problemy