2012-12-19 10 views
7

W rozwijanym menu, jakie każda opcja wyświetlana jak poniżej jako przykład:Jak wyświetlać imię i nazwisko w osobnych wpisach tekstowych?

scomp23 - Jack Turner

Teraz z tego kodu poniżej:

var text = $(this).find('option:selected').text(); 
var split = text.split(' - '); 
$('#currentAdminAlias').val(split[0]);  
$('#currentAdminForename').val(split[1]); 
$('#currentAdminSurname').val(split[2]); 

Co staram się zrobić, to wyświetlacz scomp23 Wprowadzanie tekstu (to działa poprawnie), wyświetlenie Jack w #currentAdminForename wprowadzanie tekstu i wyświetlanie w tekście wprowadzania .

Problem polega na tym, że wyświetla tylko imię i nazwisko tylko w tekście wejściowym #currentAdminForename.

Teraz wiem, dlaczego tak się dzieje, ale moje pytanie brzmi: jak wyświetlić imię i nazwisko w osobnych wpisach tekstowych?

Odpowiedz

2
 var text = $(this).find('option:selected').text(); 
     var split = text.split(' - '); 
     var names = split[1].split(' '); 
     $('#currentAdminAlias').val(split[0]);  
     $('#currentAdminForename').val(names[0]); 
     $('#currentAdminSurname').val(names[1]); 

Albo rozważyć dodanie każdej wartości chcesz elementu opcji jako atrybut danych HTML 5. Co daje

 var element = $(this).find('option:selected'); 
     $('#currentAdminAlias').val(element.data('alias')); 
     $('#currentAdminForename').val(element.data('forename')); 
     $('#currentAdminSurname').val(element.data('surname')); 

z elementem opcji próbka wygląda jak

 <option data-alias="scomp23" data-forename="Jack" data-surname="Turner"> 
      scomp23 - Jack Turner 
     </option> 
+0

W tej chwili ta aplikacja obsługuje tylko imię i nazwisko, więc powinno być dobrze z twoją odpowiedzią – Manixman

3
 var split = text.split(' '); 
     $('#currentAdminAlias').val(split[0]);  
     $('#currentAdminForename').val(split[2]); 
     $('#currentAdminSurname').val(split[3]); 
+0

zgodzę odpowiedź, jeśli pozwala mi. Czy mogę zadać małe pytanie. Jeśli mam opcję rozwijaną, która jest "scomp22 - Andy Hall" i mam inną opcję, która jest "John Bailey-Smith", to czy mogę użyć tego samego kodu powyżej, czy muszę go trochę zmienić? – Manixman

+0

Jeśli nie zawsze masz taką samą strukturę dla tekstu opcji, użycie atrybutów danych staje się bardzo przydatne, a nie poleganie na analizie tekstu opcji. Zobacz moją odpowiedź. – SamStephens

+0

Nie, nie możesz. Podział na pierwszy da ci 4 wyniki w tablicy, ale podzielony na drugi da ci tylko 2 wpisy. Jeśli zawsze masz formularz [adminAlias] - [First] [Last] OR [First] [Last], możesz zrobić podział na przestrzeni. Sprawdź długość tablicy. jeśli długość wynosi 2, wówczas 0 jest pierwsze, a 1 - ostatnie. Jeśli długość wynosi 4, to admin ma wartość 0, pierwsza to 2, ostatnia to 3. –

Powiązane problemy