39

How can I format the text in a JavaScript alert box? I need a word in the text to be underlined.

0

7 Answers 7

42

You can use only:

\b = Backspace 
\f = Form feed 
\n = New line 
\r = Carriage return 
\t = tab
\000 = octal character 
\x00 = hexadecimal character 
\u0000 = hexadecimal unicode character

So, you can insert different ASCII characters, but not format them (like italic or bold).

EDIT I also have to mention, that in fact alert acts like toString conversion, so including tags and/or styles is not possible.

Sign up to request clarification or add additional context in comments.

4 Comments

You can underline with unicode character '\u0332'; alert('h̲e̲l̲l̲o̲'); (might not come out as a solid line, though)
@PaulS. yep, but it's not underline anyway
It's possible to do some interesting stuff with those hexa numbers
Thanks, but I'm curious what you're expecting \fFormFeed to accomplish within an alert?
9

Underline a string using unicode character '\u0332', called a COMBINING LOW LINE

function underline(s) {
    var arr = s.split('');
    s = arr.join('\u0332');
    if (s) s = s + '\u0332';
    return s;
}

var str = underline('hello world'); // "h̲e̲l̲l̲o̲ ̲w̲o̲r̲l̲d̲"

alert(str);

This method is not guaranteed to produce a smooth underline.

Example of confirm() on Firefox 59:

firefox confirm u0332

1 Comment

I needed this for a prompt box to underline the Y in Yes. Y\u0332es. Thank you. I've just tested var str = underline(underline('hello world')); and it makes the underline double up if that's what anyone is after. You can also give it 3 etcetera like so: var str = underline(underline(underline('hello world')));
4

You can not style the text inside an alert box. But you can use a modal box solution instead, here's a list to get you started:

Comments

2

In my case I created internationalization through a JavaScript file. I needed a mnemonic on each button so I was looking for an easy solution. Actually, I've an easy approach to get the wanted result:

\u0332 is the Unicode Character COMBINING LOW LINE

With this character you can underline single letters.

Demonstration:

alert('S\u0332earch - s underlined');

i18n = {};

i18n.SEARCH = "S\u0332earch - s underlined";

document.getElementById('search').innerHTML = i18n.SEARCH;
<button id="search"></button>

Comments

2

Update: Browsers have started to disable Unicode support in their native dialogs, so this is a dead end.


As two answers suggest the solution is to use Unicode, but you have to do this properly! I also wanted a more reusable solution where I would not need to reinvent the wheel each and every time. So I came up with this small JavaScript function for convenience.

alert('Really need to alert some '+toUnicodeVariant('underlined', 'bold sans', 'underline')+' text');
<script src="https://rawgithub.com/davidkonrad/toUnicodeVariant/master/toUnicodeVariant.js"></script>

Should produce something like this in all major browsers (try run the code snippet above) :

enter image description here

Comments

1

You can't. Use external lib as JQuery UI Dialog or your own implementation.

Comments

-1

This is not possible. You'd have to use a plugin. If you have jQuery installed there's a bunch to choose from. If not this one looks promising: http://simplemodal.plasm.it/#examples

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.