Reputation: 1037
So, here is my dilemma: I am trying to append to a value in JQuery. So, I have an input
and what I want is to append to then end some text (in this case a dash). I tried .append("-");
but that didn't work because it appended it to the back of the input and not the actual value of it. Then I tried getting creative with something like append.val()
but I quickly realized you couldn't do that. In the code below, type in three characters into the name input
and then it will start the mayhem. Here is my code:
$(function() {
$("#editorTextInfoName").keyup(function() {
var infoNameTextValue = $("#editorTextInfoName").val();
$("#fullName").text(infoNameTextValue);
});
setInterval(function() {
var infoNameTextValue = $("#editorTextInfoName").val();
var editorTextInfoBoxLength = infoNameTextValue.length;
if (editorTextInfoBoxLength == 3) {
$("#fullName").append("-");
$("#editorTextInfoName").after("-");
}
}, 1);
});
table {
display: inline-block;
}
#image {
width: 125px;
height: 125px;
border-radius: 50%;
margin-top: -45px;
}
.spacer {
width: 15px;
}
hr {
height: 200px;
width: 7.5px;
border-radius: 20px;
border: none;
background-color: cornflowerBlue;
}
#fullName {
font-family: 'Source Sans Pro', sans-serif;
font-size: 24px;
color: orange;
margin-top: -40px;
}
#job {
font-family: 'Source Sans Pro', sans-serif;
font-size: 18px;
margin-top: -10px;
}
#jobLocationText {
font-family: 'Source Sans Pro', sans-serif;
font-size: 16px;
margin-top: -10px;
}
.otherText {
color: seaGreen;
}
#emailAddress, #phoneNumber, #officePhoneNumber, #address, #website {
font-size: 17px;
}
#extra1, #extra2, #extra3, #extra4, #extra5, #extra6 {
white-space: pre-wrap;
}
#signatureEditorText {
font-family: 'Source Sans Pro', sans-serif;
font-size: 24px;
margin-bottom: 40px;
}
.editorTextInfo {
color: gray;
font-family: 'Lato', sans-serif;
font-size: 18px;
margin-bottom: 7px;
}
.editorTextBox {
font-family: 'Source Sans Pro', sans-serif;
font-size: 16px;
height: 20px;
width: 160px;
border: 2px solid darkGray;
border-radius: 6px;
}
.editorTextBox:focus {
outline: 0;
}
#dash1, #dash2, #dash3, #dash4 {
font-family: 'Source Sans Pro', sans-serif;
font-size: 24px;
}
#dash1 {
margin-left: -137px;
margin-top: -5px;
}
#dash2 {
margin-left: -104px;
margin-top: -5px;
}
#dash3 {
margin-left: -87px;
margin-top: -5px;
}
#dash4 {
margin-left: -54px;
margin-top: -5px;
}
#editorTextInfoPhone1 {
margin-left: -100px;
}
#editorTextInfoPhone2 {
margin-left: -131px;
}
#editorTextInfoPhone3 {
margin-left: -98px;
}
#editorTextInfoOfficePhone1 {
margin-left: -50px;
}
#editorTextInfoOfficePhone2 {
margin-left: -81px;
}
#editorTextInfoOfficePhone3 {
margin-left: -48px;
}
.editorTextBoxPhone, .editorTextBoxOfficePhone {
font-family: 'Source Sans Pro', sans-serif;
font-size: 16px;
height: 20px;
width: 24px;
border: 2px solid darkGray;
border-radius: 6px;
}
.editorTextBoxPhoneOther, .editorTextBoxOfficePhoneOther {
font-family: 'Source Sans Pro', sans-serif;
font-size: 16px;
height: 20px;
width: 32px;
border: 2px solid darkGray;
border-radius: 6px;
}
.editorTextBoxPhone:focus, .editorTextBoxPhoneOther:focus, .editorTextBoxOfficePhone:focus, .editorTextBoxOfficePhoneOther:focus {
outline: 0;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<link rel="icon" href="Logo.ico">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
<title>HTML Hub</title>
<link href="index.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<center>
<table cellpadding="0" cellspacing="0" border="0" style="background: none; border-width: 0px; border: 0px; margin: 0; padding: 0;">
<tr>
<td>
<center>
<img src="https://vignette2.wikia.nocookie.net/mafiagame/images/2/23/Unknown_Person.png/revision/latest?cb=20151119092211" id="image" title="Picture to be displayed">
</center>
</td>
<td class="spacer"></td>
<td rowspan="4">
<hr>
</td>
<td class="spacer"></td>
</tr>
<tr>
<td>
<center>
<div id="fullName">Billy Staples</div>
</center>
</td>
</tr>
<tr>
<td>
<center>
<div id="job"><i>Programmer</i></div>
</center>
</td>
</tr>
<tr>
<td>
<center>
<div id="jobLocationText">at <b id="jobLocation">My Company</b></div>
</center>
</td>
</tr>
</table>
<table id="contactInfo" cellpadding="0" cellspacing="0" border="0" style="background: none; border-width: 0px; border: 0px; margin: 0; padding: 0;">
<tr>
<td>
<div id="emailAddress"><span class="otherText">Email: </span><span id="emailAddressText">[email protected]</span></div>
</td>
</tr>
<tr>
<td>
<div id="phoneNumber"><span class="otherText">Phone: </span><span id="phoneNumberFirst">111</span>-<span id="phoneNumberSecond">222</span>-<span id="phoneNumberThird">3333</span></div>
</td>
</tr>
<tr>
<td>
<div id="officePhoneNumber"><span class="otherText">Office Phone: </span><span id="officePhoneNumberFirst">444</span>-<span id="officePhoneNumberSecond">555</span>-<span id="officePhoneNumberThird">6666</span></div>
</td>
</tr>
<tr>
<td>
<div id="address"><span class="otherText">Address: </span><span id="addressText">1379 Philadelphia Avenue</span></div>
</td>
</tr>
<tr>
<td>
<div id="website"><span class="otherText">Website: </span><span id="websiteText">example.com</span></div>
</td>
</tr>
<tr>
<td>
<div id="extra1"><span class="otherText" id="extra1Label"></span><span id="extra1Text"> </span></div>
</td>
</tr>
<tr>
<td>
<div id="extra2"><span class="otherText" id="extra2Label"></span><span id="extra2Text"> </span></div>
</td>
</tr>
<tr>
<td>
<div id="extra3"><span class="otherText" id="extra3Label"></span><span id="extra3Text"> </span></div>
</td>
</tr>
<tr>
<td>
<div id="extra4"><span class="otherText" id="extra4Label"></span><span id="extra4Text"> </span></div>
</td>
</tr>
<tr>
<td>
<div id="extra5"><span class="otherText" id="extra5Label"></span><span id="extra5Text"> </span></div>
</td>
</tr>
</table>
</center>
<p></p>
<table id = "editTable" cellpadding="0" cellspacing="0" border="0" style="background: none; border-width: 0px; border: 0px; margin: 0; padding: 0;">
<tr>
<td>
<div id = "signatureEditorText">Signature Editor</div>
</td>
</tr>
<tr>
<td>
<div class = "editorTextInfo">Name</div>
</td>
</tr>
<tr>
<td>
<input id = "editorTextInfoName" type = "text" class = "editorTextBox">
</td>
</tr>
</table>
</body>
</html>
Also, I actually meant .after()
for the input
, not append()
. When I tried .append()
, it didn't do anything.
My actual goal for this is so that it can be like a phone number input
(I just was testing it out on the name input
) so that you type in three numbers and then it adds a dash.
Any suggestions? Thanks in advance!
Upvotes: 1
Views: 99
Reputation: 4300
Using polling to update '-' is not a good idea. You can check value on each KeyUp and decided to append '-'.
Here is JSFiddle link for solution.
$(function() {
// Save editor and fullName in variable
var $editorTextInfoname = $("#editorTextInfoName");
var $fullName = $("#fullName");
$editorTextInfoname.keyup(function() {
// Get editor text
var editorText = $editorTextInfoname.val();
$fullName.text( editorText );
if (editorText.length == 3){
$editorTextInfoname.focus().val( editorText + '-' );
}
// Sync full name with editor text
$fullName.text( $editorTextInfoname.val() );
});
});
Upvotes: 0
Reputation: 49
May you try these?
$(function() {
$("#editorTextInfoName").keyup(function() {
var infoNameTextValue = $("#editorTextInfoName").val();
$("#fullName").text(infoNameTextValue);
var infoNameTextValue = $("#editorTextInfoName").val();
var editorTextInfoBoxLength = infoNameTextValue.length;
if (editorTextInfoBoxLength == 3) {
$("#fullName").append("-");
$("#editorTextInfoName").after("-");
}
});
});
Upvotes: 0
Reputation: 12085
You need to this inside keyup
function instead of setinterval
$(function() {
$("#editorTextInfoName").keyup(function() {
var infoNameTextValue = $("#editorTextInfoName").val();
$("#fullName").text(infoNameTextValue);
var full_string = $("#editorTextInfoName").val().split("-").join("");
if (full_string.length > 0) {
full_string = full_string.match(new RegExp('.{1,3}', 'g')).join("-");
}
$(this).val(full_string);
});
});
table {
display: inline-block;
}
#image {
width: 125px;
height: 125px;
border-radius: 50%;
margin-top: -45px;
}
.spacer {
width: 15px;
}
hr {
height: 200px;
width: 7.5px;
border-radius: 20px;
border: none;
background-color: cornflowerBlue;
}
#fullName {
font-family: 'Source Sans Pro', sans-serif;
font-size: 24px;
color: orange;
margin-top: -40px;
}
#job {
font-family: 'Source Sans Pro', sans-serif;
font-size: 18px;
margin-top: -10px;
}
#jobLocationText {
font-family: 'Source Sans Pro', sans-serif;
font-size: 16px;
margin-top: -10px;
}
.otherText {
color: seaGreen;
}
#emailAddress, #phoneNumber, #officePhoneNumber, #address, #website {
font-size: 17px;
}
#extra1, #extra2, #extra3, #extra4, #extra5, #extra6 {
white-space: pre-wrap;
}
#signatureEditorText {
font-family: 'Source Sans Pro', sans-serif;
font-size: 24px;
margin-bottom: 40px;
}
.editorTextInfo {
color: gray;
font-family: 'Lato', sans-serif;
font-size: 18px;
margin-bottom: 7px;
}
.editorTextBox {
font-family: 'Source Sans Pro', sans-serif;
font-size: 16px;
height: 20px;
width: 160px;
border: 2px solid darkGray;
border-radius: 6px;
}
.editorTextBox:focus {
outline: 0;
}
#dash1, #dash2, #dash3, #dash4 {
font-family: 'Source Sans Pro', sans-serif;
font-size: 24px;
}
#dash1 {
margin-left: -137px;
margin-top: -5px;
}
#dash2 {
margin-left: -104px;
margin-top: -5px;
}
#dash3 {
margin-left: -87px;
margin-top: -5px;
}
#dash4 {
margin-left: -54px;
margin-top: -5px;
}
#editorTextInfoPhone1 {
margin-left: -100px;
}
#editorTextInfoPhone2 {
margin-left: -131px;
}
#editorTextInfoPhone3 {
margin-left: -98px;
}
#editorTextInfoOfficePhone1 {
margin-left: -50px;
}
#editorTextInfoOfficePhone2 {
margin-left: -81px;
}
#editorTextInfoOfficePhone3 {
margin-left: -48px;
}
.editorTextBoxPhone, .editorTextBoxOfficePhone {
font-family: 'Source Sans Pro', sans-serif;
font-size: 16px;
height: 20px;
width: 24px;
border: 2px solid darkGray;
border-radius: 6px;
}
.editorTextBoxPhoneOther, .editorTextBoxOfficePhoneOther {
font-family: 'Source Sans Pro', sans-serif;
font-size: 16px;
height: 20px;
width: 32px;
border: 2px solid darkGray;
border-radius: 6px;
}
.editorTextBoxPhone:focus, .editorTextBoxPhoneOther:focus, .editorTextBoxOfficePhone:focus, .editorTextBoxOfficePhoneOther:focus {
outline: 0;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<link rel="icon" href="Logo.ico">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
<title>HTML Hub</title>
<link href="index.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<center>
<table cellpadding="0" cellspacing="0" border="0" style="background: none; border-width: 0px; border: 0px; margin: 0; padding: 0;">
<tr>
<td>
<center>
<img src="https://vignette2.wikia.nocookie.net/mafiagame/images/2/23/Unknown_Person.png/revision/latest?cb=20151119092211" id="image" title="Picture to be displayed">
</center>
</td>
<td class="spacer"></td>
<td rowspan="4">
<hr>
</td>
<td class="spacer"></td>
</tr>
<tr>
<td>
<center>
<div id="fullName">Billy Staples</div>
</center>
</td>
</tr>
<tr>
<td>
<center>
<div id="job"><i>Programmer</i></div>
</center>
</td>
</tr>
<tr>
<td>
<center>
<div id="jobLocationText">at <b id="jobLocation">My Company</b></div>
</center>
</td>
</tr>
</table>
<table id="contactInfo" cellpadding="0" cellspacing="0" border="0" style="background: none; border-width: 0px; border: 0px; margin: 0; padding: 0;">
<tr>
<td>
<div id="emailAddress"><span class="otherText">Email: </span><span id="emailAddressText">[email protected]</span></div>
</td>
</tr>
<tr>
<td>
<div id="phoneNumber"><span class="otherText">Phone: </span><span id="phoneNumberFirst">111</span>-<span id="phoneNumberSecond">222</span>-<span id="phoneNumberThird">3333</span></div>
</td>
</tr>
<tr>
<td>
<div id="officePhoneNumber"><span class="otherText">Office Phone: </span><span id="officePhoneNumberFirst">444</span>-<span id="officePhoneNumberSecond">555</span>-<span id="officePhoneNumberThird">6666</span></div>
</td>
</tr>
<tr>
<td>
<div id="address"><span class="otherText">Address: </span><span id="addressText">1379 Philadelphia Avenue</span></div>
</td>
</tr>
<tr>
<td>
<div id="website"><span class="otherText">Website: </span><span id="websiteText">example.com</span></div>
</td>
</tr>
<tr>
<td>
<div id="extra1"><span class="otherText" id="extra1Label"></span><span id="extra1Text"> </span></div>
</td>
</tr>
<tr>
<td>
<div id="extra2"><span class="otherText" id="extra2Label"></span><span id="extra2Text"> </span></div>
</td>
</tr>
<tr>
<td>
<div id="extra3"><span class="otherText" id="extra3Label"></span><span id="extra3Text"> </span></div>
</td>
</tr>
<tr>
<td>
<div id="extra4"><span class="otherText" id="extra4Label"></span><span id="extra4Text"> </span></div>
</td>
</tr>
<tr>
<td>
<div id="extra5"><span class="otherText" id="extra5Label"></span><span id="extra5Text"> </span></div>
</td>
</tr>
</table>
</center>
<p></p>
<table id = "editTable" cellpadding="0" cellspacing="0" border="0" style="background: none; border-width: 0px; border: 0px; margin: 0; padding: 0;">
<tr>
<td>
<div id = "signatureEditorText">Signature Editor</div>
</td>
</tr>
<tr>
<td>
<div class = "editorTextInfo">Name</div>
</td>
</tr>
<tr>
<td>
<input id = "editorTextInfoName" type = "text" class = "editorTextBox">
</td>
</tr>
</table>
</body>
</html>
Upvotes: 0
Reputation: 3034
$("#editorTextInfoName").val($("#editorTextInfoName").val() + "-");
Upvotes: 1