Zobacz pełną wersję : Taka sama nazwa użytkownika i Nazwisko
Witam.
Potrzebuję zrobić w rejestracji (1.0.x) modyfikację która schowa pole:
Imię Nazwisko a dane wpisane w Nazwa Użytkownika (username) skopiuje
do schowanego pola (name).
Ma ktoś jakiś pomysł.
Tutaj przykładowa zmiana chowająca pole Imię i Nazwisko w w rejestracji
dodająca stałą wartość (value="Name"):
Potrzebuję to zmienić na wartość wpisaną w pole username.
<!-- <tr>
<td width="30%">
<?php echo _REGISTER_NAME; ?> *
</td>
<td> -->
<input type="hidden" name="name" size="40" value="Name" class="inputbox" maxlength="50" />
<!-- </td>
</tr> -->
np funkcja javascript
function copy(){
nameField = document.nazwaForma.name;
poleZKtóregoPójdzieKopia = document.nazwaForma.poleZKtóregoPójdzieKopia;
nameField.value = poleZKtóregoPójdzieKopia.value;
}
Wywołujesz funkcję w zdarzeniu js (sam sobie wybierz). Np onchange="copy();"
To oczywiście taka uproszczona wersja
Jeśli mógłbym poprosić jak w takim bądź razie skopiować wartość z value w polu Username do Name w formularzu rejestracyjnym (chiałem po prostu schować Name , które nie jest mi potrzebne ale żeby nie było problemów niech sobie kopiuje wartość z Username) :
<tr>
<td width="30%">
<?php echo _REGISTER_NAME; ?> *
</td>
<td>
<input type="text" name="name" size="40" value="" class="inputbox" maxlength="50" />
</td>
</tr>
<tr>
<td>
<?php echo _REGISTER_UNAME; ?> *
</td>
<td>
<input type="text" name="username" size="40" value="" class="inputbox" maxlength="25" />
</td>
</tr>
<tr>
<tr>
<td width="30%">
<?php echo _REGISTER_NAME; ?> *
</td>
<td>
<input type="text" name="name" size="40" value="" class="inputbox" maxlength="50" />
</td>
</tr>
<tr>
<td>
<?php echo _REGISTER_UNAME; ?> *
</td>
<td>
<input type="text" name="username" onkeypress="copy();" size="40" value="" class="inputbox" maxlength="25" />
</td>
</tr>
<tr>
<script language="JavaScript" type="text/javascript">
function copy(){
nameField = document.nazwaForma.name;
userField = document.nazwaForma.username;
userField.value = nameField.value;
}
***********
Pisane na szybko więc jeśli coś się wykrzaczy to pisz. W miejscu nazwaForma wstaw nazwę swojego formularza.
Zdarzenia są też różne więc może znajdziesz coś bardziej pasującego, ale ja lubie onkeypress :). Zamiast tych gwiazdek na końcu wstaw znacznik zamykający script Nie mam narazie czasu walczyć z forum :D
Gdy onkeypress podpięty jest pod pole username to gdy wpisuję wartość w tym polu to znika ona po literze (nie powinno tak być tylko powinna się cała pojawiać) ponadto nie kopiuje się to do pola Name, przynajmniej validator po zatwierdzeniu każe uzupełnić pole Name, które zresztą jest schowane.
Czy nie powinno być czego w polu Name w wartości value=""
typu:
pole Name: value="tutaj skopiowana wartość value z pola Username" ?
Przepraszam ale pisałem że to na szybko :D
powinno być:
nameField.value = userField.value;
Zmień sobie z hidden na text i sprawdź czy przepisuje. Jak tak to ukryj pole
W obecnej wersji miałeś że po wpisaniu wartości w userfield pobierało z nameField więc pobierało pustą wartość
Działa jak powinno tj.
Przy schowanym polu Name (imię nazwisko) po wpisaniu w Username (użytkownik) kopiuje wartość do pola name.
Niestety niektóre komponenty wymagają obu pół, Ja w serwisie nie potrzebuję
Imienia i Nazwiska ale zeby problemów nie było takie rozwiązanie jest najwygodniejsze.
Pozdrawiam.
El capitán
22-11-2008, 11:34
A jak to będzie wyglądało w przypadku Joomli 1.5?
Ścieżka do pliku z formularzem jest następująca:
Twój_katalog_z_joomla/components/com_user/views/register/tmpl/default.php
Masz tam pole name i username
Funkcja javascript dla 1.5 jest następująca:
<script language="JavaScript" type="text/javascript">
function copy(){
nameField = document.josForm.name;
userField = document.josForm.username;
nameField.value = userField.value;
}
Pozostaje Ci tylko dodać jeszcze jej wywołanie w formularzu:
<input type="text" id="username" name="username" onkeypress="copy();" size="40" value="<?php echo $this->user->get( 'username' );?>" class="inputbox required validate-username" maxlength="25" />
Ostatnim krokiem jest ukrycie pola username czyli zmiana z text na hidden
El capitán
23-11-2008, 16:15
Wszystko kopiuje tylko jest jeden problem, wpisuję np: w polu użytkownika: Piotrek, a on kopiuje do pola name Piotre (zawsze brakuje ostatniej litery).
Spróbuj inne zdarzenie. Dostępne są one tutaj:
http://webmade.org/porady/zdarzenia-events-js-javascript.php
Zazwyczaj do tych celów wystarczy zdarzenie onBlur, które aktywuje funkcję w momencie przejścia do innego pola niż te w którym aktualnie wpisujesz dane.
Sorry za odświeżanie..
Przeglądam różne tematy, z rejestracją nowych użytkowników, oraz polem imię i nazwisko... Czemu nigdy nikt nie chce powiedzieć jak zupełnie ukryć to pole? :)
Owszem, jestem zielony z Joomli, ale skoro w default.php, w linii kodu z rejestracją imienia i nazwiska (Czy nazwy, jak to jest spolszczone w joomli 1.5) jest taki kod:
<?php echo $this->user->get( 'name' );?>
a niżej w nicku usera:
<?php echo $this->user->get( 'username' );?>
To chyba gdzieś w kodzie można ustawić, by name<=username (pobierało informacje z).
Tylko teraz powiedzcie gdzie i jak to zrobić
Pozdrawiam
Jeśli chcesz tak zrobić to możesz dać hiddena na name i miejscu gdzie formularz zostaje wysłany zamiast name zmienic na username. Sposobów jest wiele trzeba tylko troche pogrzebać. Ja niestety nie mam teraz kodu Joomla więc na szybko też nic nie poradze. Jak wkleisz plik to spróbuje pomóc.
Zmienić? Nic z tego. Informacja musi być i ta i ta wysłana do bazy danych. A trzeba by zrobić jakoś tak, by podczas wysyłania danych do bazy, username=name
vBulletin® v4.2.5, Prawa przedruku © 2024 vBulletin Solutions, Inc. Wszystkie prawa zastrzeżone.
Tłumaczenie: Polskie Centrum Joomla!