Если пользователь вводит только одно слово без пробела OriginalValue.indexOf(' ')
вернет -1
Тогда OriginalValue.substr(-1)
вернет часть строки, начинающуюся с указанного индекса и продолжающуюся до заданного числаперсонажей после.Это означает, что -1
будет последним символом этого слова, -2
будет последними двумя символами и т. Д.
Лучший способ решить эту проблему - использовать разделение.Таким образом, даже если есть только одно слово, у вас есть один сплит.Затем, учитывая количество разделений, вы назначаете его своим скрытым входам first_name и last_name.
Это будет работать, только если пользователь вводит ровно два слова (имя, фамилия), что если у кого-то отчество?Или имеет более трех слов?Рассмотрим международные имена, у некоторых людей есть смешные длинные имена, такие как this Hubert Blaine Wolfeschlegelsteinhausenbergerdorff Sr
function TextCapture(txtid) {
//var OriginalValue = document.getElementById("name").value;
var OriginalValue = txtid.value; // You already have input passed from html
document.getElementById("first_name").value = OriginalValue.split(' ').slice(0,1);
document.getElementById("last_name").value = OriginalValue.split(' ').slice(1,2);
}