PDA

Zobacz pełną wersję : Taka sama nazwa użytkownika i Nazwisko



am123
25-09-2008, 16:31
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> -->

vego007
25-09-2008, 17:19
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

am123
26-09-2008, 10:13
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>

vego007
26-09-2008, 13:48
<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

am123
26-09-2008, 15:06
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" ?

vego007
26-09-2008, 17:26
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ść

am123
27-09-2008, 11:17
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?

vego007
23-11-2008, 11:17
Ś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).

vego007
23-11-2008, 17:31
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.

Eridor
24-01-2010, 23:05
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

vego007
26-01-2010, 18:00
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.

Eridor
26-01-2010, 18:04
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