简体   繁体   中英

How to change placeholder with Font-Awesome content using jQuery?

I want to change the placeholder attribute trying attr() using it this way:

$(this).attr("placeholder", " Mandatory field");

But the result is not the Font-Awesome icon , it literally looks looks like this:

" Mandatory field"

Nevertheless, if I put

<input type="text" class="mandatory_field form-control" id="affiliation" placeholder="&#xf0a4; Mandatory field"/>

with CSS

.mandatory_field {  
   font-family: FontAwesome,"Helvetica Neue",Helvetica,Arial,sans-serif; 
}

It works, but I need to know how to get those results dynamically with jQuery.

Thanks in advance.

This solution needs only:

  • one line of jQuery
  • CSS property font-family:FontAwesome
  • No HTML at all

You'll need the specific CSS code for the icon prefixed with a \\u\u003c/code> . Font-Awesome documents only class and unicode. Fortunately, this site has what you need. Here's what it should be in jQuery:

 $('.mandatory_field').attr('placeholder', '\ Mandatory field');

The only difference between CSS and JavaScript font entities is the u in the second character position for JavaScript.

In the demo, I also added some styles with the ::placeholder pseudo element as a bonus. You can style your placeholders without affecting the user input style.

Demo

 $('.mandatory_field').attr('placeholder', '\ Mandatory field');
 /* With the exception of font-family:FontAwesome everything || is optional. */ input { font: inherit } .mandatory_field::-webkit-input-placeholder { /* Chrome/Opera/Safari */ color: red; font-family: FontAwesome; font-variant: small-caps; } .mandatory_field::-moz-placeholder { /* Firefox 19+ */ color: red; font-family: FontAwesome; font-variant: small-caps; } .mandatory_field:-ms-input-placeholder { /* IE 10+ */ color: red; font-family: FontAwesome; font-variant: small-caps; }
 <link rel="stylesheet" href="https://cdn.jsdelivr.net/fontawesome/4.7.0/css/font-awesome.min.css"> <input type="text" class="mandatory_field form-control" id="affiliation"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

You can use a data attribute to store the awesome font symbol you want and use it combined with the text $input.data('placeholder') + ' Mandatory field' .

Code example:

 var $input = $('#affiliation'), placeholder = $input.data('placeholder') + ' Mandatory field'; $input.attr('placeholder', placeholder);
 .mandatory_field { font-family: FontAwesome,"Helvetica Neue",Helvetica,Arial,sans-serif; }
 <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="text" data-placeholder="&#xf0a4;" class="mandatory_field form-control" id="affiliation">

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM