2013-05-15 14 views
18

Jak mogę użyć jquery, aby sprawdzić, czy pola tekstowe są puste, gdy są przesyłane bez ładowania login.php?Formularz jquery przesłać, aby sprawdzić puste pola

<form action="login.php" method="post"> 
    <label>Login Name:</label> 
    <input type="text" name="email" id="log" /> 
    <label>Password:</label> 
    <input type="password" name="password" id="pwd" /> 
    <input type="submit" name="submit" value="Login" /> 
</form> 

Dzięki.

+1

stosować wymagane atrybutu. W przypadku braku zgodności można użyć innych sposobów. – NEO

+0

@NEO "Inne sposoby" nie oferują żadnej pomocy. – ProfK

Odpowiedz

31

Można to zrobić:

// Bind the event handler to the "submit" JavaScript event 
$('form').submit(function() { 

    // Get the Login Name value and trim it 
    var name = $.trim($('#log').val()); 

    // Check if empty of not 
    if (name === '') { 
     alert('Text-field is empty.'); 
     return false; 
    } 
}); 

FIDDLE DEMO

9

Można użyć 'wymagana' http://jsbin.com/atefuq/1/edit

<form action="login.php" method="post"> 
    <label>Login Name:</label> 
    <input required type="text" name="email" id="log" /> 
    <label>Password:</label> 
    <input required type="password" name="password" id="pwd" /> 
    <input required type="submit" name="submit" value="Login" /> 
</form> 
+0

Czy wymagane nadal nie działa w przeglądarce Safari? Tak jest dziś powiedziane na w3schools. – Mark

+0

To nie działa w Safari. – Tom

1

należy spróbować z jQuery plugin sprawdzania poprawności:

$('form').validate({ 
    rules:{ 
     email:{ 
      required:true, 
      email:true 
     } 
    }, 
    messages:{ 
     email:{ 
      required:"Email is required", 
      email:"Please type a valid email" 
     } 
    } 
}) 
8

Prostym rozwiązaniem byłoby coś takiego

$("form").on("submit", function() { 

    var has_empty = false; 

    $(this).find('input[type!="hidden"]').each(function() { 

     if (! $(this).val()) { has_empty = true; return false; } 
    }); 

    if (has_empty) { return false; } 
}); 

Uwaga: Metoda jQuery.on() jest dostępny tylko w wersji 1.7+ jQuery, ale jest obecnie preferowaną metodą mocowania obsługi zdarzeń.

Ten kod wykonuje pętlę przez wszystkie dane wejściowe w formularzu i uniemożliwia wysłanie formularza, zwracając wartość false, jeśli żadna z nich nie ma wartości. Zauważ, że nie wyświetla użytkownikowi żadnej wiadomości o tym, dlaczego formularz nie został przesłany (zdecydowanie zalecamy jego dodanie).

Można też spojrzeć na wtyczkę jQuery validate. Robi to i wiele więcej.

UWAGA: Tego typu techniki należy zawsze używać w połączeniu z walidacją po stronie serwera.

+0

Ale to sprawdzi również ukryte pola, a jeśli są puste, uniemożliwi to przesłanie formularza. – vdua

+0

Dobra uwaga. Dodałem selektor atrybutów, aby zignorować ukryte pola. –

3

należy dodać obsługę do formularza submit zdarzenia. W programie obsługi należy sprawdzić, czy w polu tekstowym znajdują się pola elementu i hasła, jeśli wartości nie są puste.

$('form').submit(function() { 
    var res = true; 
    // here I am checking for textFields, password fields, and any 
    // drop down you may have in the form 
    $("input[type='text'],select,input[type='password']",this).each(function() { 
     if($(this).val().trim() == "") { 
      res = false; 
     } 
    }) 
    return res; // returning false will prevent the form from submitting. 
}); 
3

Naprawdę nienawidzę formularzy, które nie mówią mi, które dane wejściowe są/brakuje. Więc poprawiam odpowiedź Dominika - dziękuję za to.

W zestawie plików css klasa "borderR" do granicy ma czerwony kolor.

$('#<form_id>').submit(function() { 
    var allIsOk = true; 

    // Check if empty of not 
    $(this).find('input[type!="hidden"]').each(function() { 
     if (! $(this).val()) { 
      $(this).addClass('borderR').focus(); 
      allIsOk = false; 
     } 
    }); 

    return allIsOk 
}); 
1
function isEmpty(val) { 
if(val.length ==0 || val.length ==null){ 
    return 'emptyForm'; 
}else{ 
    return 'not emptyForm'; 
} 

}

$(document).ready(function(){enter code here 
    $("form").submit(function(event) { 
     $('input').each(function(){ 
      var getInputVal = $(this).val(); 
      if(isEmpty(getInputVal) =='emptyForm'){ 
       alert(isEmpty(getInputVal)); 
      }else{ 
       alert(isEmpty(getInputVal)); 
      } 
     }); 
     event.preventDefault(); 
    }); 
}); 
+2

Witamy w SO. Chociaż ten kod może rozwiązać problem OP, czy możesz wyjaśnić, dlaczego i jak to działa? To znacznie poprawiłoby jakość twojej odpowiedzi. – m00am

0
var save_val = $("form").serializeArray(); 
$(save_val).each(function(index, element) { 
    alert(element.name); 
    alert(element.val); 
}); 
Powiązane problemy