2009-12-27 16 views
8

Mam formularz, który wymaga javascript do włączenia do sprawdzania poprawności, czy jest sposób, aby wyłączyć przycisk Wyślij, gdy javascript jest wyłączony i ostrzec użytkownika, aby włączyć go najpierw?wyłącz przycisk przesyłania, gdy javascript jest wyłączony

+7

Kontrola kondycji strony klienta danych może być wygodniejsza dla użytkownika. Nie może zapewnić ci żadnych zabezpieczeń. Złośliwi klienci mogą przesyłać dowolne dane, które im się podobają. Wykonaj kontrole na serwerze. Wtedy nie musisz się martwić o to, czy użytkownik ma włączoną obsługę JS, czy też nie. – Quentin

+1

Czy istnieje ku temu powód biznesowy? Tylko FYI (jeśli jesteś nowy) wszystkie walidacje wykonane przez JavaScript można łatwo obejść - należy zawsze sprawdzić dane formularza na serwerze. –

+0

powodem jest to, że mam wiele formularzy, które obliczyć cenę na wiele elementów, gdy javascript jest wyłączona sprawdzania poprawności nie będzie działać (używam wtyczki jquery do sprawdzania poprawności), nie będzie działać i po przesłaniu go przez użytkownika formularz wyśle ​​puste pola – datisdesign

Odpowiedz

24

Wyłącz to domyślnie i użyj JavaScript, aby go włączyć.

W ten sposób, jeśli JavaScript jest wyłączony, przycisk również pozostanie wyłączony.

wersja jQuery:

<script type="text/javascript"> 
$(function(){ 
    $('#submitBtn').attr('disabled', false); 
}); 
</script> 
+0

Dziękuję za twoją pomoc :) – datisdesign

+1

Po prostu bądź ostrożny z funkcją '_onload', ponieważ jeśli wcześniej ustawiono właściwość' window.onload', twoja funkcja * nigdy * nie będzie działać. Właściwie, ponieważ blok 'script' jest zdefiniowany po wprowadzeniu, można założyć, że' getElementById' znajdzie go, ponieważ gdy oceniany jest skrypt, dane wejściowe znajdują się już w DOM ... – CMS

+1

@ CMS Right. Dlatego właśnie wolę jQuery. –

2

Nie definiuj akcji formularza HTML, a raczej definiuj tylko procedurę obsługi zdarzenia javascript onSubmit. Jeśli javascript nie jest włączony, onSubmit nie uruchomi się, ale ponieważ nie ma akcji formularza, przycisk wysyłania również nic nie da.

Możesz także zdecydować się na działanie formularza HTML i przejść do strony błędu wyjaśniającej, że javascript musi być włączony, aby użytkownik mógł uzyskać jakąś informację zwrotną.

Alternatywnie możesz zacząć od przycisku wyłączonego (jak sugerują inne plakaty). Jeśli to zrobisz, powinieneś również rozważyć komunikat na formularzu informujący, dlaczego przycisk jest wyłączony. Usuń tę wiadomość za pomocą javascript, jeśli jest włączona w tym samym czasie, gdy ponownie włączysz przycisk.

0

Ponieważ wyłączanie przycisku programowego w zależności od środowiska i alarmowania mu są zarówno zadania w zależności od jakiegoś języka skryptowego (jak JavaScript), odpowiedź brzmi nie: -/

+0

Cóż, możesz domyślnie go wyłączyć, a następnie włączyć go za pomocą JavaScriptu –

+0

z prawej! nie myślałem o tym, ale tak czy inaczej, nie jestem wielkim fanem zależności javascript ... – moritz

+0

to pytanie nie zależy od javascript? – Jon

5

Czy to domyślnie wyłączone, a jeśli jest javascript, a następnie włącz go.

+0

+1 jest to najłatwiejsza i najrozsądniejsza sugestia. – cletus

+0

Dziękuję cletus :) – johnnyArt

0

Masz rozwiązaniem umożliwiającym udział. W części Alerting możesz użyć dobrego starego tagu. (-:

<noscript> 
<H1> It Wont work w/o javascript. Please Enable</h1> 
</noscript> 
0

Przepraszam za opóźnienie w odpowiedzi, ale to dało mi do myślenia o tym, jak uporać się z tym co mam podobny problem i to doprowadziło mnie tutaj zawsze należy zaprogramować witryny bez JavaScript i dodać go po zwiększyć. to, ale w moim przypadku użycie takich rzeczy jak lightbox jest używane jako dane wejściowe, które jeśli javascript jest wyłączony, nie działa poprawnie (zwłaszcza, że ​​moje przekazuje wartości do rodzica)

Moja sugestia jest taka, że ​​mam nadzieję, że masz PHP włączone, możesz po prostu umieścić na górze dokumentu:

<?php if (isset($_POST)) { 
    //redirect to page, or set a message variable saying "no results saved" 
    header('some_page'); 
    $message = "We've detected you do not have " . 
       "javascript enabled. No results saved"; 
} ?> 

Stamtąd trzeba będzie ustawić wszystkie przyciski na stronie powiedzieć

<input name="button" id="button" type="submit" onclick="return false;" /> 

czy można prościej iść

<form name="my_form" id="my_form" method="post" action="" onclick="return false;" /> 

nadzieję, że to pomaga!

Powiązane problemy