Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Ustalenie rodzaju pola formularza
Forum PHP.pl > Forum > Przedszkole
TheArt
Chodzi mi o to by użytkownik miał narzucony rodzaj pola formularza. Przykładowo w polu WIEK mógł wpisać tylko cyfry, zaś w polu email musiał wpisać "@". W polu imie nazwisko musial wpisac dwa wyrazy, zas w polu ulubiony kolor mogl wybrac kilka kolorow z dostepnych. Chcialbym przeczytać o całej składni "input" tylko nie moge znaleźć w Internecie pelnego opisu. Wszedzie tylko jakies kursy z narzucona tematyką.
nospor
to co mowisz to nie jest rodzaj pola w walidacja pola.
walidacja moze być zarówno po stronie przeglądarki (js) jak i po stronie serwera (np. php)

ps: na necie masz pełno materiałów o walidacji
Spawnm
o formularzach poczytasz tutaj: klik
jeśli chodzi o sprawdzenie czy jest @ lub 2 wyrazy to albo po wysłaniu w php sprawdzasz albo przed wysłaniem w javascript.
TheArt
Chciałbym tylko opis funkcji form, input wraz z parametrami. W stylu helionowego opisu HTMLa: http://webmaster.helion.pl/kurshtml/indeks/input.htm. To co napisał spawnm jest fajne tylko nie w moim języku.

Jak zrobić, żeby w formularzu dyscyplina sportowa w polu ulubiona pisało delikatnym szarym kolorem "wpisz ulubiona dyscyplinę", żeby po kliknięciu w to pole ten napis znikał.

Jak zrobić wymaganie wpisania liczb, bo rozumiem że to da się.
Wicepsik
  1. <input type="text" name="dyscyplina" value="wpisz ulubiona dyscypline">



Nawet w linku który podałeś pisze:
value - określa początkową, domyślną wartość danego pola (niewymagany)
erix
Cytat
Chciałbym tylko opis funkcji form, input wraz z parametrami. W stylu helionowego opisu HTMLa: http://webmaster.helion.pl/kurshtml/indeks/input.htm. To co napisał spawnm jest fajne tylko nie w moim języku.

Spróbuj może z XForms?
TheArt
dzięki wicepsik, tyle że ten tekst nie znika po ustawieniu w polu kursora, jak to zrobić by znikł, by po ustawieniu kursora w polu nie było już tekstu
krzysiekk
witam
  1. <script language="javascript">
  2. function czysc(element)
  3. {
  4. element.value="";
  5. }
  6.  
  7.  
  8. <input type="text" value="miejsce na info" onfocus="czysc(this)">
piotrooo89
po co tak na około tyle pisać?

  1. onfocus="this.value=''"


i też zadziała.
Asmox
Oczywiście, ale jak pól w formularzu będzie milion pięćset sto dziewięćset, to chyba lepiej wpisać nazwę funkcji niż polecenie
piotrooo89
tak racja, jest różnica na 2 znakach...
nospor
spapraliscie tak prosty kod ze glowa mala winksmiley.jpg No i teraz wejde w inputa, napis mi zniknie wpisze cos i wyjde. no i teraz zauwazylem ze literowke popelnilem. wchodze w inputa by poprawic literowke a tu.... zonk tongue.gif

No i sie teraz klocicie nad tym spapranym kodem winksmiley.jpg Napiszcie jak nalezy i wtedy dopiero sie przekomazajcie. Moze dojdziecie do innych wnioskow.
krzysiekk
w zasadzie kod robił co chciał autor czyli czyscił pole inputa
  1. <script language="JavaScript">
  2. function czysc(Input)
  3. {
  4. if (Input.value == 'Dodaj...') {
  5. Input.value = '';
  6. }
  7.  
  8. return true;
  9. }
  10.  
  11.  
  12. <input type="text" value="Dodaj..." onfocus="czysc(this)">

teraz można poprawić dane np. literówkę
nospor
Cytat
w zasadzie kod robił co chciał autor czyli czyscił pole inputa
a widziales gdzies w praktyce kody, ktore czyszczą inputa zawsze niezaleznie od tresci? Bo ja nie. Mozna sie wiec bylo domyslic, ze autorowi tez chodzi o taki troche bardziej wypasiony winksmiley.jpg
Asmox
  1. <script language="javascript">
  2. function czysc(element)
  3. {
  4. dane = array("imie", "nazwisko", "datę urodzin");
  5. for(i=0; i<dane.lenght; i++) {
  6. if (element.value == "Tu wpisz " + dane[i])
  7. element.value = '';
  8. }
  9. }

Można by było (może) zrobić coś z wyrażeniami regularnymi, ale ja nie jestem specem od JavaScriptu.

@TheArt powiem ci, że nie ma sensu walidować 2 razy i zrób porządną walidację w PHP. Podpowiem ci nawet, że jest specjalny zestaw funkcji do sprawdzania, czy zmienna/pole klasy jest czymś tam: is_... (numeric, integer, string, array itd...). A jak chcesz zrobić zajefajnie wyglądające powiadomienia, że coś jest nie tak, to w tabelce formularza (mam nadzieję, że tworzysz formularz w tabeli) dodajesz kolumnę na błędy i na przykład:
  1. <span class="<?php if (isset($errors['telefon'])) echo "blad" ?>">Popraw dane!</span>

Jeżeli się da element i atrybut class/is ustawi się na pusty to nic się nie wyświetli. Oczywiście możesz też zrobić coś lepszego jak na przykład:
  1. <?php
  2. <td>(isset($errors['telefon'])) ? echo $errors['telefon'] : echo "<br />"</td>
  3. ?>
TheArt
Dzięki chłopaki za wyczerpujące kody, choć mało z nich rozumiem. Obsługę błędów zrobiłem jednak z tym znikającym tekstem nie kumam. Moglibyście trochę wytłumaczyć ten kod.

Trochę mi się rozjaśniło, używam tego:

Kod
<script language="JavaScript">
function czysc(Input)
{
if (Input.value == 'Dodaj...') {
Input.value = '';
}

return true;
}
</script>

<input type="text" value="Dodaj..." onfocus="czysc(this)">


tylko z tego co widzę do każdego pola formularza trzeba zrobić osobno:

Kod
{
if (Input.value == 'Dodaj...') {
Input.value = '';
}


w zależności od treści która ma być w polu przed kliknięciem, chyba że da się wprowadzić 'or', w C++ jest takie wyrażenie logiczne, czy w php też. Chodzi mi o

Kod
{
if (Input.value == 'Dodaj...' or 'tekst2' or 'tekst3') {
Input.value = '';
}


PS. Jak to zastosować do textarea

Chłopaki znalazłem w necie trochę inny sposób, bez używania js, co moim zdaniem daje pewność, że zadziała też u tych, którzy mają wyłączone skrypty js.

Kod
<?
$nasz_tekst = 'nasz tekst zachęty';
    
$kasowanie = 'onfocus="this.value='';"';
    
if(!$wartość1)
{
$kasuj = $kasowanie;
$wartość1 = $nasz_tekst;
}
else
$kasuj = '';
  
echo '<textarea '.$kasuj.'>'.$wartość1.'</textarea>';
  
  
if(!$wartość1)
{
$kasuj = $kasowanie;
$wartość2 = 'nasz wartość początkowa';
}
else
$kasuj = '';
    
echo '<input type="text" value="'.$wartość2.'" '.$kasuj.'/>';
?>


Tyle, że ciągle wywala błąd parsowania.
Pawel_W
błąd niewidoczny, ale przy parsowaniu wyskakuje
  1. <?php
  2. $kasowanie = 'onfocus="this.value='';"';
  3. ?>

na
  1. <?php
  2. $kasowanie = 'onfocus="this.value='';"';
  3. ?>

a co do javascript to wystarczyłoby
  1. <input title="tekst na zachete" value="tekst na zachete" onfocus="if(this.value==this.title)this.value=''; " type="text">

powinno zadziałać
TheArt
Cytat(Pawel_W @ 26.06.2009, 19:50:11 ) *
a co do javascript to wystarczyłoby
  1. <input title="tekst na zachete" value="tekst na zachete" onfocus="if(this.value==this.title)this.value=''; " type="text">

powinno zadziałać


Tyle, że to nadal zadziała tylko dla jednego konkretnego ciągu znaków.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.