从HTML表单提交的字段只有第一个字符

时间:2019-03-21 14:46:43

标签: javascript html forms salesforce

我们有一个HTML表单,可将​​潜在客户提交给Salesforce。我将在下面粘贴代码。我添加了一些Javascript,使我拥有一个名称字段,而不是单独的名字和姓氏字段。他们会在姓氏字段中输入第一个单词后提交任何内容。

但是,当用户仅向该字段中提交一个单词时,只会提交第一个字符。

例如。形式='John'的名称字段,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 个答案:

答案 0 :(得分:1)

如果用户仅输入一个单词,没有任何空格OriginalValue.indexOf(' ')将返回-1

然后OriginalValue.substr(-1)将返回字符串的一部分,该字符串从指定的索引开始,然后扩展给定数量的字符。这意味着-1将是该单词的最后一个字符,-2将是该单词的最后两个字符,依此类推。

解决此问题的更好方法是使用split。这样,即使只有一个字,您也可以一分为二。然后,根据给定的拆分数量,将其分配给您的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);
}

答案 1 :(得分:0)

如果要用空格字符分隔名称,请尝试使用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>