Created
March 28, 2020 14:01
-
-
Save LokeshSagi/f91a957ba127361d1f71b257212f7027 to your computer and use it in GitHub Desktop.
Auto format US phone numbers in (xxx) xxx-xxxx format
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<template> | |
<div class="slds-grid slds-wrap"> | |
<div class="slds-col slds-size_1-of-1 slds-large-size_6-of-12 slds-p-horizontal--small"> | |
<div class="slds-form-element slds-p-top_medium"> | |
<label class="slds-form-element__label">Phone number<abbr class="slds-required" | |
title="required">*</abbr></label> | |
<div class="slds-form-element__control"> | |
<span onkeypress={keyCheck} onchange={keyCheck}> | |
<lightning-input-field data-req="required" data-address="phone" data-id="phone" field-name="Phone" | |
variant="label-hidden"></lightning-input-field> | |
</span> | |
</div> | |
</div> | |
</div> | |
</div> | |
</template> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { formatPhoneNumber } from "c/util"; | |
export default class AutoFormatPhone extends LightningElement { | |
keyCheck(event) { | |
let number = event.target.value; | |
this.template.querySelector(`[data-id="phone"]`).value = formatPhoneNumber(event, number); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export function formatPhoneNumber(event, number) { | |
let keyCode = event.which; | |
if ((keyCode < 48 || keyCode > 57)) { | |
event.preventDefault(); | |
return number; | |
} else if (number && number.length > 13) { | |
event.preventDefault(); | |
return number; | |
} | |
return autoFormatNumber(number); | |
} | |
function autoFormatNumber(number) { | |
number = number.replace(/[^\d]/g, ''); | |
if (number.length === 1) { | |
number = number.replace(/(\d{1})/, "($1)"); | |
} else if (number.length === 2) { | |
number = number.replace(/(\d{2})/, "($1)"); | |
} else if (number.length === 3) { | |
number = number.replace(/(\d{3})/, "($1)"); | |
} else if (number.length === 4) { | |
number = number.replace(/(\d{3})(\d{1})/, "($1) $2"); | |
} else if (number.length === 5) { | |
number = number.replace(/(\d{3})(\d{2})/, "($1) $2"); | |
} else if (number.length === 6) { | |
number = number.replace(/(\d{3})(\d{3})/, "($1) $2"); | |
} else if (number.length === 7) { | |
number = number.replace(/(\d{3})(\d{3})(\d{1})/, "($1) $2-$3"); | |
} else if (number.length === 8) { | |
number = number.replace(/(\d{3})(\d{3})(\d{2})/, "($1) $2-$3"); | |
} else if (number.length === 9) { | |
number = number.replace(/(\d{3})(\d{3})(\d{3})/, "($1) $2-$3"); | |
} else if (number.length === 10) { | |
number = number.replace(/(\d{3})(\d{3})(\d{4})/, "($1) $2-$3"); | |
} | |
return number; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment