Только первый символ отправки поля из формы HTML - PullRequest
0 голосов
/ 21 марта 2019

У нас есть HTML-форма, которая отправляет приводит в Salesforce. Я вставлю код ниже. Я добавил Javascript, который позволяет мне иметь одно поле имени вместо отдельных полей имени и фамилии. Он отправляет что-либо после первого слова в поле фамилии.

Однако, когда пользователь отправляет в поле только одно слово, отправляется только первый символ.

Например. Поле имени в форме = 'Джон', Поле имени в Salesforce = 'J'

function TextCapture(txtid) {
  var OriginalValue = document.getElementById("name").value;
  document.getElementById("first_name").value = OriginalValue.substr(0, OriginalValue.indexOf(' '));
  document.getElementById("last_name").value = OriginalValue.substr(OriginalValue.indexOf(' '));;
}
<body data-rsssl=1 data-rsssl=1 data-rsssl=1 data-rsssl=1 data-rsssl=1 data-rsssl=1 data-rsssl=1 data-rsssl=1 data-rsssl=1 data-rsssl=1 data-rsssl=1 data-rsssl=1 data-rsssl=1 data-rsssl=1 data-rsssl=1 data-rsssl=1 data-rsssl=1 data-rsssl=1 data-rsssl=1
  data-rsssl=1>
  <div>
    <form action="https://webto.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8" method="POST" target='_parent'>
      <input type=hidden name="oid" value="00D0Y0000034cvq">
      <input type=hidden name="retURL" value="https://globalstudyuk.com/success">
      <br />
      <h5>
        <label for="name">Full Name</label>
        <input id="name" maxlength="80" name="name" size="20" onchange="TextCapture(this)" type="text" />
        <br />
        <input type="hidden" id="first_name" maxlength="40" name="first_name" size="20" type="text" />
        <input type="hidden" id="last_name" maxlength="80" name="last_name" size="20" type="text" />

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Если пользователь вводит только одно слово без пробела 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);
}
0 голосов
/ 21 марта 2019

Если вы хотите разделить имя пробелом, попробуйте split Метод массива.

function TextCapture(txtid) {
  var OriginalValue = document.getElementById("name").value;
  var valArr = OriginalValue.split(' ')
  document.getElementById("first_name").value = valArr[0] || ''
  document.getElementById("last_name").value = valArr[1] || ''

  console.log(valArr)
}
<div>
  <form action="https://webto.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8" method="POST" target='_parent'><input type=hidden name="oid" value="00D0Y0000034cvq">
    <input type=hidden name="retURL" value="https://globalstudyuk.com/success">
    <br />
    <h5>
      <label for="name">Full Name</label>
      <input id="name" maxlength="80" name="name" size="20" onchange="TextCapture(this)" type="text" /> <br />
      <input type="hidden" id="first_name" maxlength="40" name="first_name" size="20" type="text" />
      <input type="hidden" id="last_name" maxlength="80" name="last_name" size="20" type="text" />
    </h5>
  </form>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...