Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][quickForm] Sprawdzenie wartosci check box
Wolfie
post
Post #1





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam.


Napisalem sobie formularz w QuickForm w ktorym znajduje sie checkbox

formularz wyglada nastepujaco:

Kod
<?

require_once 'HTML/QuickForm.php';

$formularz = new HTML_QuickForm('formularz');

$formularz->setDefaults(
    array('login' => 'Mati')
    );



$formularz->addElement('header', null ,'Zgłoszenie nowego użytkownika');

$formularz->addElement('checkbox', 'check1', null, 'checkMe', null);

$formularz->addElement('text', 'login', 'Login:', null);
$formularz->addElement('password', 'password', 'Hasło (5-10 znaków) ', array('size' => 12, 'maxlength' => 10));
$formularz->addElement('password', 'repeat', 'Hasło (powtórz)', array('size' => 12, 'maxlength' => 10));

$formularz->addElement('text', 'name', 'Imie i nazwisko', null);
$formularz->addElement('text', 'mail', 'Adres e-mail', null);
$formularz->addElement('text', 'age', 'Wiek', null);
$formularz->addElement('text', 'phone', 'Telefon', null);

$formularz->addElement('select', 'prenumerata', 'Czy prenumerujesz <br /> magazyn INTERNET?:', array('Tak' => 'Tak', 'Nie' => 'nie'));
$formularz->addElement('submit', null, 'Wyslij');

//addRule($name, $msg, $option)
$formularz->addRule('login', 'Niepoprawny format pola login', 'regex', '/^[-_a-z0-9]+$/i');
$formularz->addRule('login', 'Wypełnij pole', 'required');
$formularz->addRule('password', 'Podaj haslo', 'required');
$formularz->addRule('password', 'Haslo musi miec 5-10 znakow', 'rangelength', array(5,10));
$formularz->addRule('repeat', 'Powtorz podane haslo', 'required');
$formularz->addRule(array('password','repeat'), 'Hasla musza byc takie same', 'compare');

$formularz->addRule('mail', 'Podaj adres e-mail', 'required', null, 'client');
$formularz->addRule('mail', 'Podaj poprawny adres e-mail', 'email');

$formularz->addRule('age', 'Podaj wiek', 'required', null, 'client');
$formularz->addRule('age', 'To nie moze byc Twoj wiek', 'numeric');

$formularz->addRule('name', 'Podaj imie i nazwisko', 'required', null, 'client');
$formularz->addRule('phone', 'To nie moze byc Twoj numer', 'numeric');

if($formularz->validate()){
    echo '<h1> Formularz </h1>';
        echo '<b> Imie i nazwisko </b>'.htmlspecialchars($formularz->exportValue('name')).'<br />';
        echo '<b> Hasło </b>'.htmlspecialchars($formularz->exportValue('password')).'<br />';
        echo '<b> Login </b>'.htmlspecialchars($formularz->exportValue('login')).'<br />';
        echo '<b> E-mail </b>'.htmlspecialchars($formularz->exportValue('mail')).'<br />';
        echo '<b> Wiek </b>'.htmlspecialchars($formularz->exportValue('age')).'<br />';
        echo '<b> Czy prenumerujesz : </b>'.htmlspecialchars($formularz->exportValue('prenumerata')).'<br />';
        echo '<b> Telefon </b>'.htmlspecialchars($formularz->exportValue('phone')).'<br />';
        exit;
}

$formularz->display();

?>



Szukalem w necie ale ciezko znalezc cos na temat QuickForm

Problem polega na tym, iz chce po zaznaczeniu checkboxa "zaslonic" powiedzmy pole 'age' aby nie mozna bylo tam nic wpisac.
Po odznaczeniu checkbox-a chcialbym aby to pole bylo znowu dostepne do edycji.

Jakies pomysly?

Ewentualnie zamias checkbox uzyc radio

POzdrawiam

Ten post edytował Wolfie 18.12.2008, 16:34:51
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Wolfie
post
Post #2





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Ok. Rozwiazalem problem

Uzylem javascriptu za znacznikami php

Blad byl w linijce

Kod
if(document.getElementById('box').checked == true){


Brakowalo slowa checked (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Dzieki za pomoc

Teraz wszystko dziala

Pozdrawiam

Mam jeszcze jedno pytanie bo nie wiem jak sobie z tym poradzic

Mianowicie zrobilem 2 elementy radio z czego jeden teoretycznie jest domyslnie zaznaczony, przynajmniej tak wyglada to na stronie

Skrypt ma dzialac w ten sposob ,ze gdy jeden radio button jest aktywny to zasloniete jest pole login a gdy drugi radio button jest aktywny to zasloniete jest pole mail

Problem polega na tym iz wlaczajac skrypt mimo ze jeden radio button jest zaznaczony oba pola mozna edytowac

kod wyglada nastepujaco :

Kod
<?

require_once 'HTML/QuickForm.php';

/*
$defaults = array('name' => 'Matt',
                  'age' => 25,
                  'phone' => 445);
                  */

$formularz = new HTML_QuickForm('formularz');

$formularz->setDefaults(
    array('login' => 'Mati')
    );

$attr = array('id'=>'radio',
              'onClick' => 'dis_area();');

$attr2 = array('id'=>'radio2',
               'onClick'=> 'dis_area();');



$formularz->addElement('header', null ,'Zgłoszenie nowego użytkownika');

//$formularz->addElement('checkbox', 'check1', null, 'checkMe', $attr);

$formularz->addElement('text', 'login', 'Login:', array('id'=>'log'));
$formularz->addElement('password', 'password', 'Hasło (5-10 znaków) ', array('size' => 12, 'maxlength' => 10));
$formularz->addElement('password', 'repeat', 'Hasło (powtórz)', array('size' => 12, 'maxlength' => 10));

$formularz->addElement('text', 'name', 'Imie i nazwisko', null);
$formularz->addElement('text', 'mail', 'Adres e-mail', array('id'=>'email'));
$formularz->addElement('text', 'age', 'Wiek', null);
$formularz->addElement('text', 'phone', 'Telefon', null);

//$radio[] = &HTML_QuickForm::CreateElement('radio', 'Firma', 'Firma');
//$radio[] = &HTML_QuickForm::CreateElement('radio', 'Os_priv', 'Osoba prywatna');
//$formularz->addGroup($radio, 'cos', null, '&nbsp;');
$formularz->addElement('radio', 'status', 'Firma', null, null, $attr);
$formularz->addElement('radio', 'status', 'Osoba prywatna', null, null, $attr2);

$formularz->addElement('select', 'prenumerata', 'Czy prenumerujesz <br /> magazyn INTERNET?:', array('Tak' => 'Tak', 'Nie' => 'nie'));
$formularz->addElement('submit', null, 'Wyslij');

//addRule($name, $msg, $option)
$formularz->addRule('login', 'Niepoprawny format pola login', 'regex', '/^[-_a-z0-9]+$/i');
$formularz->addRule('login', 'Wypełnij pole', 'required');
$formularz->addRule('password', 'Podaj haslo', 'required');
$formularz->addRule('password', 'Haslo musi miec 5-10 znakow', 'rangelength', array(5,10));
$formularz->addRule('repeat', 'Powtorz podane haslo', 'required');
$formularz->addRule(array('password','repeat'), 'Hasla musza byc takie same', 'compare');

$formularz->addRule('mail', 'Podaj adres e-mail', 'required', null, 'client');
$formularz->addRule('mail', 'Podaj poprawny adres e-mail', 'email');

$formularz->addRule('age', 'Podaj wiek', 'required', null, 'client');
$formularz->addRule('age', 'To nie moze byc Twoj wiek', 'numeric');

$formularz->addRule('name', 'Podaj imie i nazwisko', 'required', null, 'client');
$formularz->addRule('phone', 'To nie moze byc Twoj numer', 'numeric');

if($formularz->validate()){
    
    $formularz->freeze();
    /*
    echo '<h1> Formularz </h1>';
        echo '<b> Imie i nazwisko </b>'.htmlspecialchars($formularz->exportValue('name')).'<br />';
        echo '<b> Hasło </b>'.htmlspecialchars($formularz->exportValue('password')).'<br />';
        echo '<b> Login </b>'.htmlspecialchars($formularz->exportValue('login')).'<br />';
        echo '<b> E-mail </b>'.htmlspecialchars($formularz->exportValue('mail')).'<br />';
        echo '<b> Wiek </b>'.htmlspecialchars($formularz->exportValue('age')).'<br />';
        echo '<b> Czy prenumerujesz : </b>'.htmlspecialchars($formularz->exportValue('prenumerata')).'<br />';
        echo '<b> Telefon </b>'.htmlspecialchars($formularz->exportValue('phone')).'<br />';
        exit;

    */
}

//$formularz->setDefaults($defaults);

$formularz->display();

?>

<script type="text/javascript">

function dis_area()
{
    if(document.getElementById('radio').checked == true){
        document.getElementById('log').disabled = true;
        document.getElementById('email').disabled = false;
    }
    if(document.getElementById('radio2').checked == true){
        document.getElementById('log').disabled = false;
        document.getElementById('email').disabled = true;
    }
}

</script>


Jak mozna poradzic sobie z tym problemem ?

Pytanie okazalo sie troszke glupie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Poprostu przed funkcja dis_area() dodalem jedna linijke kodu :

Kod
<script type="text/javascript">

document.getElementById('email').disabled = true;

function dis_area()
{
    if(document.getElementById('radio').checked == true){
        document.getElementById('log').disabled = true;
        document.getElementById('email').disabled = false;
    }
    if(document.getElementById('radio2').checked == true){
        document.getElementById('log').disabled = false;
        document.getElementById('email').disabled = true;
    }
}

</script>


Pozdro

Ten post edytował Wolfie 19.12.2008, 15:04:07
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 17:08