我们有一个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" />
答案 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>