2013-03-25 18 views
6

Czy mimo to mogę zmienić kolor ramki na czerwony na błąd i pozbyć się tekstu? Jest to prawie jedyny błąd, który chcę wyświetlić, i zniknie, gdy tylko wejście/tekst zostanie skupione.Wtyczka walidacji jquery - zmiana koloru obramowania + brak tekstu

<div id="contact-form"> 
      <form method="get" id="contacts"> 
       <div class="contact-controls"> 
        <label class="contact-label" for="name-input">NAME</label> 
        <div class="input-wrapper"> 
         <input type="text" name="contact-name" id="name-input" placeholder="Your Name" required> 
        </div> 
       </div> 
       <div class="contact-controls"> 
        <label class="contact-label" for="email-input">EMAIL</label> 
        <div class="input-wrapper"> 
         <input type="text" name="contact-email" id="email-input" placeholder="Your Email" required> 
        </div> 
       </div> 
       <div class="contact-controls"> 
        <label class="contact-label" for="message-input">MESSAGE</label> 
        <div class="input-wrapper"> 
         <textarea name="contact-message" id="message-input" rows="15" placeholder="Hi there&#33;" required></textarea> 
        </div> 
       </div> 
       <div class="contact-controls"> 
        <input type="hidden" name="save" value="contact"> 
        <button type="submit" class="contact-button">Send</button> 
       </div> 
      </form> 
     </div> 
+2

musielibyśmy sprawdzić swoje bieżące skrypt sprawdzający, który "pozbywa się tekstu" – Vortex

+0

h, nie mam go jeszcze, zastanawiam się, czy istnieje sposób, czy jest to kolejna wtyczka, która może zrobić to, czego szukam – vytfla

+0

Tak, jest łatwy sposób. Zobacz moją odpowiedź. – Sparky

Odpowiedz

15

Wykonaj następujące czynności:

1) Ustawić funkcję errorPlacement oddzwonienia do return false stłumić tekst komunikatu o błędzie.

2) Modyfikacja CSS dla wtyczki za .error & .validclass „s pokazać kolorowe granice, czy cokolwiek, wokół elementu. Domyślnie wtyczka jest już automatycznie stosowana i usuwa te dwa class, więc nie ma specjalnych opcji wtyczki, aby to ustawić.

roboczy DEMO: http://jsfiddle.net/8vQFd/

jQuery:

$(document).ready(function() { 

    $('#myform').validate({ // initialize the plugin 
     // your rules and options, 
     errorPlacement: function(){ 
      return false; // suppresses error message text 
     } 
    }); 

}); 
+0

Słodkie, to jest prawie idealne. Pytanie: przy ładowaniu strony moje pierwsze pole wejściowe już pokazuje błąd (.error {border: 1px red bryły}); jak mogę to zrobić, aby oznaczał tylko błąd, gdy użytkownik wprowadzi niepoprawne znaki? – vytfla

+0

@vytfla, Po prostu wykonaj moje jsfiddle, które już robi to, co chcesz. Ponieważ nie widzę twojej funkcji '.validate()', nie jestem pewien jak to się dzieje. Czy możesz zmodyfikować mój jsFiddle, aby pokazać ten problem? – Sparky

+0

http://jsfiddle.net/8vQFd/ – vytfla

-1

Można dodać klasę do wejścia/pola tekstowe, które dodać czerwoną ramkę

nazwałem go .error

input:focus,textarea:focus{ 
outline: none !important; 
} 

input.error, textarea.error{ 
outline:red groove thin; 
} 

Następnie za pomocą jQuery iść i znaleźć wejście/textareas z klasą ".error" i pustą ustaw wartość na pustą.

$(document).ready(function() { 
    $('#contact-form').find('.error').val(' '); 
}); 

Jsfiddle V1

Updated

Przykład JS

$(document).ready(function() { 
    $('#contact-form').find('.error').val(' '); 
    $('input, textarea').click(function() { 
    $(this).removeClass('error').val(''); 
    }); 

    var name = $('#name-input').val(); 

    if(name == ''){ 
     $('#name-input').addClass('error'); 
    } 
    }); 

CSS

input:focus,textarea:focus{ 
    border-color: initial; 
} 

input.error, textarea.error{ 
    border:1px solid red; 
} 

HTML

<div id="contact-form"> 
     <form method="get" id="contacts"> 
      <div class="contact-controls"> 
       <label class="contact-label" for="name-input">NAME</label> 
       <div class="input-wrapper"> 
        <input type="text" name="contact-name" id="name-input" placeholder="Your Name" value="" class="" required> 
       </div> 
      </div> 
      <div class="contact-controls"> 
       <label class="contact-label" for="email-input">EMAIL</label> 
       <div class="input-wrapper"> 
        <input type="email" name="contact-email" id="email-input" placeholder="Your Email" value="" class="" required> 
       </div> 
      </div> 
      <div class="contact-controls"> 
       <label class="contact-label" for="message-input">MESSAGE</label> 
       <div class="input-wrapper"> 
        <textarea name="contact-message" id="message-input" rows="15" placeholder="Hi there&#33;" class="" required></textarea> 
       </div> 
      </div> 
      <div class="contact-controls"> 
       <input type="hidden" name="save" value="contact"> 
       <button type="submit" class="contact-button">Send</button> 
      </div> 
     </form> 
    </div> 

JSfiddle V2

+0

Twój jsfiddle ma już czerwone granice wiadomości e-mail; Po ich naciśnięciu szukam, aby zmieniły kolor na czerwony, gdy pola są puste. – vytfla

+0

Którykolwiek język, którego używasz do przetwarzania danych, jeśli wystąpił błąd, dodaj klasę "błąd" do pola wejściowego (możesz również ustawić wartość w ten sposób) –

+0

@vytfla Zaktualizowałem moją odpowiedź –

0

Nie Jquery nr dodać inne/modyfikować żadnych funkcji Just Add Css

input[class="error"]{border:1px solid #f00 !important;} input[class="form control error"]{border:1px solid #f00 !important;} .error p{color:#f00 !important;} 
Powiązane problemy