2009-08-27 15 views
7

Jak można wyłączyć przycisk wysyłania, jeśli jest jedno lub więcej pól wejściowych pustych?Aby wyłączyć przycisk wysyłania, jeśli pola puste przez jQuery

Moja próba w pseudo-kodzie

if ($("input:empty")) { 
    $("input:disabled") 
} 
else 
    // enable the ask_question -button 

Czytałem te artykuły bez znalezienia właściwego rozwiązania

  1. Official docs about empty: to jest jak nie ma znaczenia, bo to wygląda dla wszystkich wejścia -fields
  2. a thread about disabled -feature in jQuery: wydaje się to istotne
  3. to be able to test jQuery Firefox/terminal: uzyskanie środowiska testowego pomogłoby mi najbardziej

Używam w tej chwili następującego kodu. Zawiera jeden błąd dotyczący postaci ;, ale nie mogę go znaleźć.

# 1

$(document).ready(function(){ 
    $("#ask_form").validate(){ 
     rules: { 
      username { 
       required: true, 
       minlenghth: 2 
      }, 
      email: { 
       required: true; 
       minlength: 6 
      }, 
      password { 
       required: true,                                  
       minlength: 6 
      } 
     } 
    }); 
} 

# kod 2 Meder za

I slighhtly zmodyfikowany kod Meder użytkownika. Trwale wyłącza przycisk send, więc ma również błąd.

$(document).ready(function(){ 
    var inputs = $('input', '#ask_form'), empty = false; 
    // can also use :input but it will grab textarea/select elements and you need to check for those.. 

    inputs.each(function() { 
     if ($(this).val() == '') { 
      empty = true; 
      return; 
     } 
    }); 

    if (empty) { 
     $('.ask_question').attr('disabled', 'disabled'); // or true I believe. 
    } 
}); 

Odpowiedz

10
var $submit = $("input[type=submit]"); 
if ($("input:empty").length > 0) { 
    $submit.attr("disabled","disabled"); 
} else { 
    $submit.removeAttr("disabled"); 
} 
+2

Pamiętaj tylko, aby umieścić to w zdarzeniu onChange lub podobnym, aby był uruchamiany za każdym razem, gdy zmieniono pole. –

+0

Twój kod wyłącza przyciski. Jednak wyłącza również przyciski, gdy pola nie są puste. - ** Jak czytasz to "input: empty) .length> 0" w języku angielskim? ** - Moja próba zastosowania podanej reguły do ​​tagu 'input', który jest pusty tak, że jego długość jest większa od zera. - Nie ma to dla mnie sensu, ponieważ moje rozważania prowadzą do sprzeczności. –

+0

Usunąłem '.length> 0', ale przyciski pozostaną wyłączone. –

0
var inputs = $('input', 'form#foo'), empty = false; 
// can also use :input but it will grab textarea/select elements and you need to check for those.. 

inputs.each(function() { 
    if ($(this).val() == '') { 
     empty = true; 
     return; 
    } 
}); 

if (empty) { 
    $('#el').attr('disabled', 'disabled'); // or true I believe. 
} 
+0

Twój kod ma taki sam problem jak Jason. Wyłącza trwale przycisk 'send'. –

-1

Brakujące zamknięcie, spróbuj tego na przykład # 1:

$(document).ready(function(){ 
    $("#ask_form").validate(){ 
     rules: { 
      username { 
       required: true, 
       minlenghth: 2 
      }, 
      email: { 
       required: true; 
       minlength: 6 
      }, 
      password { 
       required: true,                                  
       minlength: 6 
      } 
     } 
    }); 
}); 
Powiązane problemy