mirror of
https://github.com/aliasvault/aliasvault.git
synced 2026-03-19 15:18:02 -04:00
Simplify form detector password confirm (#541)
This commit is contained in:
@@ -8,7 +8,6 @@ export type FieldPatterns = {
|
||||
email: string[];
|
||||
emailConfirm: string[];
|
||||
password: string[];
|
||||
passwordConfirm: string[];
|
||||
birthdate: string[];
|
||||
gender: string[];
|
||||
birthDateDay: string[];
|
||||
@@ -35,7 +34,6 @@ export const EnglishFieldPatterns: FieldPatterns = {
|
||||
email: ['email', 'mail', 'emailaddress'],
|
||||
emailConfirm: ['confirm', 'verification', 'repeat', 'retype', 'verify'],
|
||||
password: ['password', 'pwd', 'pass'],
|
||||
passwordConfirm: ['confirm', 'verification', 'repeat', 'retype', '2', 'verify'],
|
||||
birthdate: ['birthdate', 'birth-date', 'dob', 'date-of-birth'],
|
||||
gender: ['gender', 'sex'],
|
||||
birthDateDay: ['birth-day', 'birthday', 'day', 'birthdate_d'],
|
||||
@@ -62,7 +60,6 @@ export const DutchFieldPatterns: FieldPatterns = {
|
||||
email: ['e-mailadres', 'e-mail'],
|
||||
emailConfirm: ['bevestig', 'herhaal', 'verificatie'],
|
||||
password: ['wachtwoord', 'pwd'],
|
||||
passwordConfirm: ['bevestig', 'herhaal', 'verificatie'],
|
||||
birthdate: ['geboortedatum', 'geboorte-datum'],
|
||||
gender: ['geslacht', 'aanhef'],
|
||||
birthDateDay: ['dag'],
|
||||
@@ -95,7 +92,6 @@ export const CombinedFieldPatterns: FieldPatterns = {
|
||||
email: [...new Set([...DutchFieldPatterns.email, ...EnglishFieldPatterns.email])],
|
||||
emailConfirm: [...new Set([...EnglishFieldPatterns.emailConfirm, ...DutchFieldPatterns.emailConfirm])],
|
||||
password: [...new Set([...EnglishFieldPatterns.password, ...DutchFieldPatterns.password])],
|
||||
passwordConfirm: [...new Set([...EnglishFieldPatterns.passwordConfirm, ...DutchFieldPatterns.passwordConfirm])],
|
||||
birthdate: [...new Set([...EnglishFieldPatterns.birthdate, ...DutchFieldPatterns.birthdate])],
|
||||
gender: [...new Set([...EnglishFieldPatterns.gender, ...DutchFieldPatterns.gender])],
|
||||
birthDateDay: [...new Set([...EnglishFieldPatterns.birthDateDay, ...DutchFieldPatterns.birthDateDay])],
|
||||
|
||||
@@ -291,51 +291,11 @@ export class FormDetector {
|
||||
? form.querySelectorAll<HTMLInputElement>('input[type="password"]')
|
||||
: this.document.querySelectorAll<HTMLInputElement>('input[type="password"]');
|
||||
|
||||
let primaryPassword: HTMLInputElement | null = null;
|
||||
let confirmPassword: HTMLInputElement | null = null;
|
||||
|
||||
// Look for the first password field that doesn't appear to be a confirmation field
|
||||
for (const input of Array.from(candidates)) {
|
||||
const attributes = [
|
||||
input.id,
|
||||
input.name,
|
||||
input.placeholder
|
||||
].map(attr => attr?.toLowerCase() ?? '');
|
||||
|
||||
if (!CombinedFieldPatterns.passwordConfirm.some(pattern => attributes.some(attr => attr.includes(pattern)))) {
|
||||
primaryPassword = input;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// If no clear primary password field is found, use the first password field as primary
|
||||
if (!primaryPassword && candidates.length > 0) {
|
||||
primaryPassword = candidates[0];
|
||||
}
|
||||
|
||||
// If we found a primary password, look for a confirmation field
|
||||
if (primaryPassword) {
|
||||
for (const input of Array.from(candidates)) {
|
||||
if (input === primaryPassword) continue;
|
||||
|
||||
const attributes = [
|
||||
input.id,
|
||||
input.name,
|
||||
input.className,
|
||||
input.placeholder
|
||||
].map(attr => attr?.toLowerCase() ?? '');
|
||||
|
||||
const confirmPatterns = ['confirm', 'verification', 'repeat', 'retype', '2', 'verify'];
|
||||
if (confirmPatterns.some(pattern => attributes.some(attr => attr.includes(pattern)))) {
|
||||
confirmPassword = input;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
const candidateArray = Array.from(candidates);
|
||||
|
||||
return {
|
||||
primary: primaryPassword,
|
||||
confirm: confirmPassword
|
||||
primary: candidateArray[0] ?? null,
|
||||
confirm: candidateArray[1] ?? null
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,17 @@ describe('FormDetector English tests', () => {
|
||||
testField(FormField.EmailConfirm, 'reenter_email', htmlFile);
|
||||
});
|
||||
|
||||
describe('English registration form 4 detection', () => {
|
||||
const htmlFile = 'en-registration-form4.html';
|
||||
|
||||
testField(FormField.Email, 'fbclc_userName', htmlFile);
|
||||
testField(FormField.EmailConfirm, 'fbclc_emailConf', htmlFile);
|
||||
testField(FormField.Password, 'fbclc_pwd', htmlFile);
|
||||
testField(FormField.PasswordConfirm, 'fbclc_pwdConf', htmlFile);
|
||||
testField(FormField.FirstName, 'fbclc_fName', htmlFile);
|
||||
testField(FormField.LastName, 'fbclc_lName', htmlFile);
|
||||
});
|
||||
|
||||
describe('English email form 1 detection', () => {
|
||||
const htmlFile = 'en-email-form1.html';
|
||||
|
||||
|
||||
@@ -0,0 +1,727 @@
|
||||
<div class="content extLoginFormContent">
|
||||
<input type="hidden" id="fbcs_keyword" name="fbcs_keyword" value="">
|
||||
<input type="hidden" id="fbcs_dept" name="fbcs_dept" value="">
|
||||
<input type="hidden" id="fbcs_div" name="fbcs_div" value="">
|
||||
<input type="hidden" id="fbcs_loc" name="fbcs_loc" value="">
|
||||
<input type="hidden" id="career_ns" name="career_ns">
|
||||
|
||||
<div class="button_row bottomspace">
|
||||
<div class="left">
|
||||
<span class="aquabtn mid inactiveAccessible">
|
||||
<span>
|
||||
|
||||
|
||||
<button type="button" onclick="javascript:setField('career_ns','home');setFieldAndSubmit('userMsgReq','false');">Go Back
|
||||
</button>
|
||||
|
||||
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<span>Already a registered user?</span>
|
||||
<a href="/career?company=1657261P&site=&lang=en_GB&requestParams=kLT07rTA9vLxk7NqwAotzGjSnSJ42lvzloG1uIhBMCuxLFGvtCQzR88jsTjDN7GAlf3WwcNiCReZ%0AGZjcGLhy8hNT3BKTS%2FKLPBk4SzKKUosz8nNSKgrsHRhAgKecA0gKADFbCYNgTn56Zp5bTn55UGph%0AaWZRakppEYNwtA%2FYipzEvHS94JKizLx067WXwp6%2FlK12Z2JgqCgA6mUsYWApKSpNBVLFmSWppYUM%0AdQzMEHGGEga%2B5MSi1NSi%2BOT83ILEvEpkWQ5DM1NzIzPDgBIGdvzSLCD7keVYU%2FPi3Z1KGNjii%2FWS%0Ai5KQpXS8SpItAjzSIn3zDJxLq7yr9DOSU5xNowKcAtMic5M8yssKsgxK3INCjMp8bSsA9GBdIQ%3D%3D%0A&_s.crb=Jtc8PHfYMn0CuzKz%2fhcdC5ZPBQfYmbHwvpj0tGRT2vM%3d">Please sign in
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span id="loginHelpText">Login credentials are case-sensitive</span>
|
||||
</p>
|
||||
|
||||
<!-- OTP Authentication Container -->
|
||||
<div id="otpContainer"></div>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var validationObjectContainer = [];
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<table id="fieldsContainer" class="axial noborder bottomspace">
|
||||
<!-- Fragments include: Starts -->
|
||||
|
||||
|
||||
<!-- Standard Field values initialization -->
|
||||
|
||||
<!-- Username -->
|
||||
<tbody><tr>
|
||||
<td class="col-sm-4">
|
||||
<label for="fbclc_userName" title="Required">
|
||||
Email Address:
|
||||
|
||||
<span class="required requiredAccessible" aria-hidden="true">*</span>
|
||||
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<input class="form-control" type="text" size="30" maxlength="99" autocomplete="false" onkeydown="clearErrMsg(event)" id="fbclc_userName" onblur="checkforMandatory("fbclc_userName",
|
||||
"Email%20Address%3a");" name="fbclc_userName" value="" aria-describedby="fbclc_userName_error" aria-required="true">
|
||||
|
||||
<div class="rcmValidationMsgArea hide" id="fbclc_userName_error"></div>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
validationObjectContainer.push(
|
||||
{
|
||||
id: "fbclc_userName",
|
||||
label: "Email Address:"
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!-- Email Address -->
|
||||
|
||||
|
||||
|
||||
<!-- Retype Email Address -->
|
||||
|
||||
<tr>
|
||||
<td class="col-sm-4">
|
||||
<label for="fbclc_emailConf" title="Required">
|
||||
Retype Email Address:
|
||||
<span class="required requiredAccessible" aria-hidden="true">*</span>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<input class="form-control" type="text" size="30" maxlength="99" autocomplete="false" id="fbclc_emailConf" name="fbclc_emailConf" title="Retype Email Address:" onkeydown="clearErrMsg(event)" onpaste="SFDOMEvent.preventDefault(event);" onblur="checkforMandatory("fbclc_emailConf", "Retype%20Email%20Address%3a"); validateEmail()" value="" '="" aria-describedby="fbclc_emailConf_error" aria-required="true">
|
||||
|
||||
<div class="rcmValidationMsgArea hide" id="fbclc_emailConf_error"></div>
|
||||
<script type="text/javascript">
|
||||
|
||||
validationObjectContainer.push(
|
||||
{
|
||||
id: "fbclc_emailConf",
|
||||
label: "Retype Email Address:"
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<!-- Password -->
|
||||
<tr class="">
|
||||
<td class="col-sm-4">
|
||||
<label for="fbclc_pwd" title="Required">
|
||||
Choose Password:
|
||||
<span class="required requiredAccessible" aria-hidden="true">*</span>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
<div class="rcmPwdPolicy">
|
||||
<input class="form-control" id="fbclc_pwd" type="password" size="30" autocomplete="false" maxlength="99" name="fbclc_pwd" value="" onkeyup="checkPasswordPolicy(event,fbclc_pwdConf);" onblur="checkforMandatory("fbclc_pwd", "Choose Password:");checkPasswordPolicy(event,fbclc_pwdConf);" aria-describedby="fbclc_pwd_error rcmPwdPolicyProgressBar " aria-required="true" aria-autocomplete="list">
|
||||
</div>
|
||||
|
||||
<a id="rcmPwdPolicyAnchor" href="javascript:void(0);" onmouseover="RCMPwdPolicyUtil.showPopup('rcmPwdPolicyAnchor');return false;" onmouseout="RCMPwdPolicyUtil.hidePopup();return false;" onfocus="RCMPwdPolicyUtil.showPopup('rcmPwdPolicyAnchor');return false;" onblur="RCMPwdPolicyUtil.hidePopup();return false;" style="margin-left: 5px; display: none;">Password Policy
|
||||
</a>
|
||||
|
||||
<div id="rcmPwdPolicyProgressBar" style="float: left; margin-left: 5px; display: inline;"><div role="presentation" class="okIcon sapIcon"></div><div id="PasswordPolicyText" aria-live="assertive" style="float:left">Password accepted</div></div>
|
||||
|
||||
|
||||
<div id="fbclc_pwd_error" class="rcmValidationMsgArea hide"></div>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
validationObjectContainer.push(
|
||||
{
|
||||
id:"fbclc_pwd",
|
||||
label: "Choose Password:"
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!-- Retype Password -->
|
||||
<tr class="">
|
||||
<td class="col-sm-4">
|
||||
<label for="fbclc_pwdConf" title="Required">
|
||||
Retype Password:
|
||||
<span class="required requiredAccessible" aria-hidden="true">*</span>
|
||||
</label>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
|
||||
<div class="rcmPwdPolicy">
|
||||
<input class="form-control invalidInput career-password-text-border" type="password" size="30" maxlength="99" autocomplete="chrome-off" id="fbclc_pwdConf" name="fbclc_pwdConf" value="" onkeyup="checkResetPasswordPolicy(event,fbclc_pwd);" onblur="checkforMandatory("fbclc_pwdConf", "Retype Password:");checkResetPasswordPolicy(event,fbclc_pwd,true);" aria-describedby="fbclc_pwdConf_error pwdMatchOrMismatch" aria-required="true" aria-invalid="true">
|
||||
</div>
|
||||
|
||||
<div id="rcmResetPwdPolicyProgressBar" style="float: left; margin-left: 5px; display: block;" class=" hide"><div class="errorMsg sapIcon"></div><div id="pwdMatchOrMismatch" aria-live="assertive" class="warningMsgText"> Passwords don’t match</div></div>
|
||||
|
||||
|
||||
<div id="fbclc_pwdConf_error" class="rcmValidationMsgArea"><span>Passwords don’t match</span></div>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
validationObjectContainer.push(
|
||||
{
|
||||
id: "fbclc_pwdConf",
|
||||
label: "Retype Password:"
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!-- First Name -->
|
||||
<tr>
|
||||
<td class="col-sm-4">
|
||||
<label for="fbclc_fName" title="Required">
|
||||
First Name:
|
||||
|
||||
<span class="required requiredAccessible" aria-hidden="true">*</span>
|
||||
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<input class="form-control" type="text" size="30" maxlength="40" autocomplete="chrome-off" id="fbclc_fName" onblur="checkforMandatory("fbclc_fName", "First Name:") && isValidName("fbclc_fName", "First Name:")" name="fbclc_fName" value="" aria-describedby="fbclc_fName_error" aria-required="true">
|
||||
<div class="rcmValidationMsgArea hide" id="fbclc_fName_error"></div>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
validationObjectContainer.push(
|
||||
{
|
||||
id: "fbclc_fName",
|
||||
label: "First Name:"
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!-- Middle Name -->
|
||||
|
||||
|
||||
<!-- Last Name -->
|
||||
<tr>
|
||||
<td class="col-sm-4">
|
||||
<label for="fbclc_lName" title="Required">
|
||||
Last Name:
|
||||
|
||||
<span class="required requiredAccessible" aria-hidden="true">*</span>
|
||||
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<input class="form-control" type="text" size="30" maxlength="40" autocomplete="chrome-off" id="fbclc_lName" onblur="checkforMandatory("fbclc_lName", "Last Name:") && isValidName("fbclc_lName", "Last Name:")" name="fbclc_lName" value="" aria-describedby="fbclc_lName_error" aria-required="true">
|
||||
|
||||
<div class="rcmValidationMsgArea hide" id="fbclc_lName_error"></div>
|
||||
<script type="text/javascript">
|
||||
|
||||
validationObjectContainer.push(
|
||||
{
|
||||
id: "fbclc_lName",
|
||||
label: "Last Name:"
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!-- Dial in Prefix-->
|
||||
|
||||
<!-- Country of Residence: Cross border search preference -->
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-sm-4">
|
||||
<label for="fbclc_country" style="white-space:normal;"><span title="Required">
|
||||
Country/Region of Residence:<span class="required requiredAccessible" aria-hidden="true">*</span></span></label>
|
||||
</td>
|
||||
<td>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-* col-md-*" style="padding:0px;">
|
||||
<select aria-required="true" aria-label="Country/Region of Residence" autocomplete="off" id="fbclc_country" name="fbclc_country" onblur="checkforMandatory("fbclc_country", "Country/Region of Residence")" aria-describedby="fbclc_country_error" onchange="clearDpcsInfo()">
|
||||
|
||||
|
||||
<option value="" role="menuitem">- Select -</option>
|
||||
|
||||
<option value="AF" role="menuitem">Afghanistan</option>
|
||||
|
||||
<option value="AL" role="menuitem">Albania</option>
|
||||
|
||||
<option value="DZ" role="menuitem">Algeria</option>
|
||||
|
||||
<option value="AD" role="menuitem">Andorra</option>
|
||||
|
||||
<option value="AO" role="menuitem">Angola</option>
|
||||
|
||||
<option value="AG" role="menuitem">Antigua and Barbuda</option>
|
||||
|
||||
<option value="AR" role="menuitem">Argentina</option>
|
||||
|
||||
<option value="AM" role="menuitem">Armenia</option>
|
||||
|
||||
<option value="AU" role="menuitem">Australia</option>
|
||||
|
||||
<option value="AT" role="menuitem">Austria</option>
|
||||
|
||||
<option value="AZ" role="menuitem">Azerbaijan</option>
|
||||
|
||||
<option value="BS" role="menuitem">Bahamas</option>
|
||||
|
||||
<option value="BH" role="menuitem">Bahrain</option>
|
||||
|
||||
<option value="BD" role="menuitem">Bangladesh</option>
|
||||
|
||||
<option value="BB" role="menuitem">Barbados</option>
|
||||
|
||||
<option value="BY" role="menuitem">Belarus</option>
|
||||
|
||||
<option value="BE" role="menuitem">Belgium</option>
|
||||
|
||||
<option value="BZ" role="menuitem">Belize</option>
|
||||
|
||||
<option value="BJ" role="menuitem">Benin</option>
|
||||
|
||||
<option value="BT" role="menuitem">Bhutan</option>
|
||||
|
||||
<option value="BA" role="menuitem">Bosnia and Herzegovina</option>
|
||||
|
||||
<option value="BW" role="menuitem">Botswana</option>
|
||||
|
||||
<option value="BR" role="menuitem">Brazil</option>
|
||||
|
||||
<option value="BN" role="menuitem">Brunei Darussalam</option>
|
||||
|
||||
<option value="BG" role="menuitem">Bulgaria</option>
|
||||
|
||||
<option value="BF" role="menuitem">Burkina Faso</option>
|
||||
|
||||
<option value="BI" role="menuitem">Burundi</option>
|
||||
|
||||
<option value="KH" role="menuitem">Cambodia</option>
|
||||
|
||||
<option value="CM" role="menuitem">Cameroon</option>
|
||||
|
||||
<option value="CA" role="menuitem">Canada</option>
|
||||
|
||||
<option value="CF" role="menuitem">Central African Republic</option>
|
||||
|
||||
<option value="TD" role="menuitem">Chad</option>
|
||||
|
||||
<option value="CL" role="menuitem">Chile</option>
|
||||
|
||||
<option value="CN" role="menuitem">China</option>
|
||||
|
||||
<option value="CO" role="menuitem">Colombia</option>
|
||||
|
||||
<option value="KM" role="menuitem">Comoros</option>
|
||||
|
||||
<option value="CG" role="menuitem">Congo</option>
|
||||
|
||||
<option value="CD" role="menuitem">Congo, the Democratic Republic of the</option>
|
||||
|
||||
<option value="CR" role="menuitem">Costa Rica</option>
|
||||
|
||||
<option value="CI" role="menuitem">Côte d'Ivoire</option>
|
||||
|
||||
<option value="HR" role="menuitem">Croatia</option>
|
||||
|
||||
<option value="CU" role="menuitem">Cuba</option>
|
||||
|
||||
<option value="CY" role="menuitem">Cyprus</option>
|
||||
|
||||
<option value="CZ" role="menuitem">Czech Republic</option>
|
||||
|
||||
<option value="DK" role="menuitem">Denmark</option>
|
||||
|
||||
<option value="DJ" role="menuitem">Djibouti</option>
|
||||
|
||||
<option value="DM" role="menuitem">Dominica</option>
|
||||
|
||||
<option value="DO" role="menuitem">Dominican Republic</option>
|
||||
|
||||
<option value="EC" role="menuitem">Ecuador</option>
|
||||
|
||||
<option value="EG" role="menuitem">Egypt</option>
|
||||
|
||||
<option value="SV" role="menuitem">El Salvador</option>
|
||||
|
||||
<option value="GQ" role="menuitem">Equatorial Guinea</option>
|
||||
|
||||
<option value="ER" role="menuitem">Eritrea</option>
|
||||
|
||||
<option value="EE" role="menuitem">Estonia</option>
|
||||
|
||||
<option value="ET" role="menuitem">Ethiopia</option>
|
||||
|
||||
<option value="FJ" role="menuitem">Fiji</option>
|
||||
|
||||
<option value="FI" role="menuitem">Finland</option>
|
||||
|
||||
<option value="FR" role="menuitem">France</option>
|
||||
|
||||
<option value="GA" role="menuitem">Gabon</option>
|
||||
|
||||
<option value="GM" role="menuitem">Gambia</option>
|
||||
|
||||
<option value="GE" role="menuitem">Georgia</option>
|
||||
|
||||
<option value="DE" role="menuitem">Germany</option>
|
||||
|
||||
<option value="GH" role="menuitem">Ghana</option>
|
||||
|
||||
<option value="GR" role="menuitem">Greece</option>
|
||||
|
||||
<option value="GD" role="menuitem">Grenada</option>
|
||||
|
||||
<option value="GT" role="menuitem">Guatemala</option>
|
||||
|
||||
<option value="GN" role="menuitem">Guinea</option>
|
||||
|
||||
<option value="GW" role="menuitem">Guinea-Bissau</option>
|
||||
|
||||
<option value="GY" role="menuitem">Guyana</option>
|
||||
|
||||
<option value="HT" role="menuitem">Haiti</option>
|
||||
|
||||
<option value="HN" role="menuitem">Honduras</option>
|
||||
|
||||
<option value="HU" role="menuitem">Hungary</option>
|
||||
|
||||
<option value="IS" role="menuitem">Iceland</option>
|
||||
|
||||
<option value="IN" role="menuitem">India</option>
|
||||
|
||||
<option value="ID" role="menuitem">Indonesia</option>
|
||||
|
||||
<option value="IR" role="menuitem">Iran, Islamic Republic of</option>
|
||||
|
||||
<option value="IQ" role="menuitem">Iraq</option>
|
||||
|
||||
<option value="IE" role="menuitem">Ireland</option>
|
||||
|
||||
<option value="IL" role="menuitem">Israel</option>
|
||||
|
||||
<option value="IT" role="menuitem">Italy</option>
|
||||
|
||||
<option value="JM" role="menuitem">Jamaica</option>
|
||||
|
||||
<option value="JP" role="menuitem">Japan</option>
|
||||
|
||||
<option value="JO" role="menuitem">Jordan</option>
|
||||
|
||||
<option value="KZ" role="menuitem">Kazakhstan</option>
|
||||
|
||||
<option value="KE" role="menuitem">Kenya</option>
|
||||
|
||||
<option value="KI" role="menuitem">Kiribati</option>
|
||||
|
||||
<option value="KP" role="menuitem">Korea, Democratic People's Republic of</option>
|
||||
|
||||
<option value="KR" role="menuitem">Korea, Republic of</option>
|
||||
|
||||
<option value="XK" role="menuitem">Kosovo</option>
|
||||
|
||||
<option value="KW" role="menuitem">Kuwait</option>
|
||||
|
||||
<option value="KG" role="menuitem">Kyrgyzstan</option>
|
||||
|
||||
<option value="LA" role="menuitem">Lao People's Democratic Republic</option>
|
||||
|
||||
<option value="LV" role="menuitem">Latvia</option>
|
||||
|
||||
<option value="LB" role="menuitem">Lebanon</option>
|
||||
|
||||
<option value="LS" role="menuitem">Lesotho</option>
|
||||
|
||||
<option value="LR" role="menuitem">Liberia</option>
|
||||
|
||||
<option value="LI" role="menuitem">Liechtenstein</option>
|
||||
|
||||
<option value="LT" role="menuitem">Lithuania</option>
|
||||
|
||||
<option value="LU" role="menuitem">Luxembourg</option>
|
||||
|
||||
<option value="MG" role="menuitem">Madagascar</option>
|
||||
|
||||
<option value="MW" role="menuitem">Malawi</option>
|
||||
|
||||
<option value="MY" role="menuitem">Malaysia</option>
|
||||
|
||||
<option value="MV" role="menuitem">Maldives</option>
|
||||
|
||||
<option value="ML" role="menuitem">Mali</option>
|
||||
|
||||
<option value="MT" role="menuitem">Malta</option>
|
||||
|
||||
<option value="MH" role="menuitem">Marshall Islands</option>
|
||||
|
||||
<option value="MR" role="menuitem">Mauritania</option>
|
||||
|
||||
<option value="MU" role="menuitem">Mauritius</option>
|
||||
|
||||
<option value="MX" role="menuitem">Mexico</option>
|
||||
|
||||
<option value="FM" role="menuitem">Micronesia, Federated States of</option>
|
||||
|
||||
<option value="MD" role="menuitem">Moldova, Republic of</option>
|
||||
|
||||
<option value="MC" role="menuitem">Monaco</option>
|
||||
|
||||
<option value="MN" role="menuitem">Mongolia</option>
|
||||
|
||||
<option value="ME" role="menuitem">Montenegro</option>
|
||||
|
||||
<option value="MA" role="menuitem">Morocco</option>
|
||||
|
||||
<option value="MZ" role="menuitem">Mozambique</option>
|
||||
|
||||
<option value="MM" role="menuitem">Myanmar</option>
|
||||
|
||||
<option value="NA" role="menuitem">Namibia</option>
|
||||
|
||||
<option value="NR" role="menuitem">Nauru</option>
|
||||
|
||||
<option value="NP" role="menuitem">Nepal</option>
|
||||
|
||||
<option value="NL" role="menuitem">Netherlands</option>
|
||||
|
||||
<option value="NZ" role="menuitem">New Zealand</option>
|
||||
|
||||
<option value="NI" role="menuitem">Nicaragua</option>
|
||||
|
||||
<option value="NE" role="menuitem">Niger</option>
|
||||
|
||||
<option value="NG" role="menuitem">Nigeria</option>
|
||||
|
||||
<option value="NO" role="menuitem">Norway</option>
|
||||
|
||||
<option value="OM" role="menuitem">Oman</option>
|
||||
|
||||
<option value="PK" role="menuitem">Pakistan</option>
|
||||
|
||||
<option value="PW" role="menuitem">Palau</option>
|
||||
|
||||
<option value="PS" role="menuitem">Palestine, State of</option>
|
||||
|
||||
<option value="PA" role="menuitem">Panama</option>
|
||||
|
||||
<option value="PG" role="menuitem">Papua New Guinea</option>
|
||||
|
||||
<option value="PY" role="menuitem">Paraguay</option>
|
||||
|
||||
<option value="PE" role="menuitem">Peru</option>
|
||||
|
||||
<option value="PH" role="menuitem">Philippines</option>
|
||||
|
||||
<option value="PL" role="menuitem">Poland</option>
|
||||
|
||||
<option value="PT" role="menuitem">Portugal</option>
|
||||
|
||||
<option value="QA" role="menuitem">Qatar</option>
|
||||
|
||||
<option value="MK" role="menuitem">Republic of North Macedonia</option>
|
||||
|
||||
<option value="RO" role="menuitem">Romania</option>
|
||||
|
||||
<option value="RU" role="menuitem">Russian Federation</option>
|
||||
|
||||
<option value="RW" role="menuitem">Rwanda</option>
|
||||
|
||||
<option value="KN" role="menuitem">Saint Kitts and Nevis</option>
|
||||
|
||||
<option value="LC" role="menuitem">Saint Lucia</option>
|
||||
|
||||
<option value="VC" role="menuitem">Saint Vincent and the Grenadines</option>
|
||||
|
||||
<option value="WS" role="menuitem">Samoa</option>
|
||||
|
||||
<option value="SM" role="menuitem">San Marino</option>
|
||||
|
||||
<option value="ST" role="menuitem">Sao Tome and Principe</option>
|
||||
|
||||
<option value="SA" role="menuitem">Saudi Arabia</option>
|
||||
|
||||
<option value="SN" role="menuitem">Senegal</option>
|
||||
|
||||
<option value="RS" role="menuitem">Serbia</option>
|
||||
|
||||
<option value="SC" role="menuitem">Seychelles</option>
|
||||
|
||||
<option value="SL" role="menuitem">Sierra Leone</option>
|
||||
|
||||
<option value="SG" role="menuitem">Singapore</option>
|
||||
|
||||
<option value="SK" role="menuitem">Slovakia</option>
|
||||
|
||||
<option value="SI" role="menuitem">Slovenia</option>
|
||||
|
||||
<option value="SB" role="menuitem">Solomon Islands</option>
|
||||
|
||||
<option value="SO" role="menuitem">Somalia</option>
|
||||
|
||||
<option value="ZA" role="menuitem">South Africa</option>
|
||||
|
||||
<option value="SS" role="menuitem">South Sudan</option>
|
||||
|
||||
<option value="ES" role="menuitem">Spain</option>
|
||||
|
||||
<option value="LK" role="menuitem">Sri Lanka</option>
|
||||
|
||||
<option value="SD" role="menuitem">Sudan</option>
|
||||
|
||||
<option value="SR" role="menuitem">Suriname</option>
|
||||
|
||||
<option value="SE" role="menuitem">Sweden</option>
|
||||
|
||||
<option value="CH" role="menuitem">Switzerland</option>
|
||||
|
||||
<option value="SY" role="menuitem">Syrian Arab Republic</option>
|
||||
|
||||
<option value="TJ" role="menuitem">Tajikistan</option>
|
||||
|
||||
<option value="TZ" role="menuitem">Tanzania, United Republic of</option>
|
||||
|
||||
<option value="TH" role="menuitem">Thailand</option>
|
||||
|
||||
<option value="TL" role="menuitem">Timor-Leste</option>
|
||||
|
||||
<option value="TG" role="menuitem">Togo</option>
|
||||
|
||||
<option value="TO" role="menuitem">Tonga</option>
|
||||
|
||||
<option value="TT" role="menuitem">Trinidad and Tobago</option>
|
||||
|
||||
<option value="TN" role="menuitem">Tunisia</option>
|
||||
|
||||
<option value="TR" role="menuitem">Turkey</option>
|
||||
|
||||
<option value="TM" role="menuitem">Turkmenistan</option>
|
||||
|
||||
<option value="TV" role="menuitem">Tuvalu</option>
|
||||
|
||||
<option value="UG" role="menuitem">Uganda</option>
|
||||
|
||||
<option value="UA" role="menuitem">Ukraine</option>
|
||||
|
||||
<option value="AE" role="menuitem">United Arab Emirates</option>
|
||||
|
||||
<option value="GB" role="menuitem">United Kingdom</option>
|
||||
|
||||
<option value="US" role="menuitem">United States</option>
|
||||
|
||||
<option value="UY" role="menuitem">Uruguay</option>
|
||||
|
||||
<option value="UZ" role="menuitem">Uzbekistan</option>
|
||||
|
||||
<option value="VU" role="menuitem">Vanuatu</option>
|
||||
|
||||
<option value="VE" role="menuitem">Venezuela</option>
|
||||
|
||||
<option value="VN" role="menuitem">Viet Nam</option>
|
||||
|
||||
<option value="YE" role="menuitem">Yemen</option>
|
||||
|
||||
<option value="ZM" role="menuitem">Zambia</option>
|
||||
|
||||
<option value="ZW" role="menuitem">Zimbabwe</option>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
<div id="fbclc_country_error" class="rcmValidationMsgArea hide"></div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
validationObjectContainer.push(
|
||||
{
|
||||
id: "fbclc_country",
|
||||
label: "Country/Region of Residence"
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Make Profile Visibile to: -->
|
||||
|
||||
|
||||
|
||||
<!-- Notifications -->
|
||||
|
||||
|
||||
<!-- Marketing Consent switch in Recruiting settings -->
|
||||
|
||||
|
||||
<!-- Captcha -->
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Data Privacy Statement -->
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="dataPrivacyId" style="white-space:normal;">
|
||||
Terms of Use:<span class="required requiredAccessible" aria-hidden="true">*</span>
|
||||
</label>
|
||||
</td>
|
||||
<td class="dpcsHyperlink">
|
||||
<span>
|
||||
<a aria-label="Terms of Use Read and accept the data privacy statement. Required" id="dataPrivacyId" role="button" tabindex="0" style="cursor:pointer;" onblur="checkforMandatory('fbclc_dpcsId', 'Terms of Use')" onkeydown="javascript:var evt = event.keyCode; if(event.keyCode == 32 || event.keyCode == 13) openDpcsDialog(true);" onclick="openDpcsDialog(true);return false;">
|
||||
Read and accept the data privacy statement.
|
||||
</a>
|
||||
</span>
|
||||
|
||||
<div class="rcmValidationMsgArea hide" id="fbclc_dpcsId_error" aria-live="assertive"></div>
|
||||
<input type="hidden" id="fbclc_dpcsId" name="fbclc_dpcsId" value="">
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
validationObjectContainer.push(
|
||||
{
|
||||
id: "fbclc_dpcsId",
|
||||
label: "Terms of Use"
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<!-- Fragments include: Ends -->
|
||||
|
||||
<!-- Create Account button -->
|
||||
<tr>
|
||||
<th></th>
|
||||
<td class="button_cell">
|
||||
<div id="dataPrivacyTooltipRegion">
|
||||
<span id="fbclc_createAccountButton_span" class="aquabtn inactiveAccessible activeAccessible">
|
||||
<span>
|
||||
<button id="fbclc_createAccountButton" name="fbclc_createAccountButton" onfocus="readMsg('');" onclick="return submitCreateAccount();">
|
||||
Create Account
|
||||
</button>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</div>
|
||||
Reference in New Issue
Block a user