2017-03-13 3 views
0

Ich arbeite an einem Skript, das Daten aus einem Feld und füllt ein zweites Feld mit einem Teil davon. Bisher funktioniert es super :-)Split Formularfeld Wert mit jQuery

Allerdings möchte ich nun einfach einen Teil des Wertes aus einem Feld verschieben.

Zum Beispiel, wenn ein Benutzer Helena Bonham-Carter betritt es würde das last_name Feld mit Bonham-Carter bevölkern und den full_name Wert als Helena Bonham-Carter verlassen.

Demo: https://jsfiddle.net/ygvtb7yn/

HTML:

<p><input type="text" name="full_name" id="full_name" placeholder="Full Name"/></p> 
<p><input type="text" name="last_name" id="last_name"></p> 

JS:

$('#full_name').keyup(function(){ 
    $('#last_name').val(this.value); 
}); 
+1

Wie würden Sie wissen, dass es der Nachname des Typs Wert ist? Was passiert, wenn Joan Marie Bonham-Carter? – guradio

+0

Das ist ein sehr guter Punkt - ich werde grundsätzlich * alles * nach dem ersten Leerzeichen als Nachname behandeln (obwohl es ein zweiter Vorname sein könnte, stimme ich zu). – michaelmcgurk

+1

in diesem Fall verwenden Sie $ ('# last_name'). Val ($ (this) .val(). Split ("") [1]); 'Aber wenn die Eingabe ist' Joan Marie Bonham-Carter' Nachname wird 'Marie Bonham-Carter' – guradio

Antwort

1

Sie JavaScript verwenden split():

$('#full_name').keyup(function(){ 
    $('#last_name').val(this.value.split(' ')[1]); 
}); 

JSFiddle

-

Edit: wenn es möglich ist, mehr als ein Leerzeichen im Namen zu haben, verwenden Sie den folgenden Code ein:

$('#full_name').keyup(function() { 
    if (this.value.indexOf(' ') > 0) 
     $('#last_name').val(this.value.substr(this.value.indexOf(' ') + 1)); 
}); 

JSFiddle

+1

Das ist perfekt, Itay - vielen Dank!:) – michaelmcgurk

0

Sie müssten t sagen Der Benutzer soll den Namen wie zuerst (Leerzeichen) zuletzt oder was auch immer in der Mitte eingeben.

$('#last_name').val($(this).val().split(" ")[1]) 
1

Verwenden $('#last_name').val($(this).val().split(" ")[1]);

Aber das garantiert nicht, einen korrekten Nachnamen für Instanzen, die die Vornamen der Person haben zwei Worte oder wenn die Person einen zweiten Vornamen eingibt.

Was dies tut, ist im Grunde der zweite Teil der Benutzereingaben.Nach dem Raum

+0

Vielen Dank für Ihre Antwort. Können Sie mir sagen, was passiert https://jsfiddle.net/t3by7a09/, wenn Sie den Namen 'Joan Marie Bonham-Carter' eingeben? – michaelmcgurk

0

Wenn ich u richtig verstehen kann dies Ihr Problem lösen

Diese lösen wird, wenn kein Nachname Vorname dann Nachnamen und wenn Nachname ausgefüllt ist auffüllt nur Nachnamen

$('#full_name').keyup(function() { 
 
    var splitedName =$(this).val().split(" "); 
 
    if (splitedName.length > 1) 
 
    $('#last_name').val($(this).val().replace(splitedName[0],"")); 
 
    else 
 
    $('#last_name').val($(this).val()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p> 
 
    <input type="text" name="full_name" id="full_name" placeholder="Full Name" /> 
 
</p> 
 

 
<p> 
 
    <input type="text" name="last_name" id="last_name"> 
 
</p>

+0

Was ist mit James Allen Smith? – DelightedD0D

+0

@Delighted Allen Smith wird bevölkert –

+0

Genau, obwohl Allen tatsächlich der zweite Vorname oder Teil des Vornamens wäre ... nur zu sagen. Es ist nicht wirklich die Antwort, die schlecht ist, sondern der Anwendungsfall selbst. Es gibt keine gute Methode, um das zu tun, was das OP will, nicht wirklich. – DelightedD0D

0

ich Sie nehme nur Nachname wollen,

dieser Code unten darum kümmern, falls es mittlerer Namen auch

$('#full_name').keyup(function(){ 
    full_name = (this.value).split(" "); 
    if(full_name.length>1) 
    $('#last_name').val(full_name[full_name.length-1]); 
}); 

/wenn die Bedingung überprüft, ob vollständige Namen haben Platz nicht, dann ist es nur Vornamen.

full_name[full_name.length-1] 

Nachname zu erhalten, falls es gibt viele Mittelnamen

+0

Was ist mit James Van Der Beek? – DelightedD0D

+0

dann Nachname ist "Beek", nach Namenskonvention ich weiß. –

+1

Es gibt viele Namenskonventionen. In dem Fall, auf den ich angespielt habe, ist James David Van Der Beek Jr. eine echte Person. James 'Nachname ist 'Van Der Beek' http://www.imdb.com/name/nm0004735/bio?ref_=nm_ov_bio_sm Es ist nicht wirklich die Antwort, die schlecht ist, sondern der Anwendungsfall selbst. Es gibt keine gute Methode, um das zu tun, was das OP will, nicht wirklich. – DelightedD0D