> For the complete documentation index, see [llms.txt](https://javascriptuse.gitbook.io/advanced/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://javascriptuse.gitbook.io/advanced/simple-javascript-captcha-example-client-side-captcha.md).

# Simple JavaScript Captcha Example (Client Side Captcha)

https\://jharaphula.com/simple-javascript-captcha-example/

## Simple JavaScript Captcha Example (Client Side Captcha)

[JAVASCRIPT FUNCTIONS & EXAMPLES](https://jharaphula.com/category/programming-solutions/javascript-code-examples/) May 14, 2016    5 (2 votes)

Captcha is a technique to protect web forms from auto submission. Validating Captcha proofs that the user is a human. Today inside this growing network many hackers are sitting around the world. They have several tools to hack. Let’s talk about a simple login form. In a login form basically we have 2 input fields (username & password) with 1 submit button. To hack if we will pass [random strings](https://jharaphula.com/javascript-function-random-string/) to username & password using a program there can be a chance in some point of time submit will successful. While manually it is quite difficult. That’s why JavaScript Captcha.

Captcha is generating a code in the format of an image or string. User need to provide Captcha code before submitting a form. Here my intention to tell you adding Captcha reduce the chance of unnatural form submissions. Captcha can be created at both the end server or client side. In this example I created a Simple JavaScript Captcha. Client side Captcha helps to reduce http requests. It gives better performance.

In the below code using math class I am generating 7 numeric characters randomly. Concatenating them with space in-between. Then assigning this value to txtCaptcha value. While user entering the text to txtCaptcha I am comparing these two values. If it is equal I am returning true else false.

#### Simple JavaScript Captcha

| `<!DOCTYPE` `html><html><head><title>Simple JavaScript Captcha Example</title><script` `type="text/javascript">/* Function to Generat Captcha */function GenerateCaptcha() {var chr1 = Math.ceil(Math.random() * 10)+ '';var chr2 = Math.ceil(Math.random() * 10)+ '';var chr3 = Math.ceil(Math.random() * 10)+ '';var chr4 = Math.ceil(Math.random() * 10)+ '';var chr5 = Math.ceil(Math.random() * 10)+ '';var chr6 = Math.ceil(Math.random() * 10)+ '';var chr7 = Math.ceil(Math.random() * 10)+ '';` `var captchaCode = chr1 + ' ' + chr2 + ' ' + chr3 + ' ' + chr4 + ' ' + chr5 + ' '+ chr6 + ' ' + chr7;document.getElementById("txtCaptcha").value = captchaCode}` `/* Validating Captcha Function */function ValidCaptcha() {var str1 = removeSpaces(document.getElementById('txtCaptcha').value);var str2 = removeSpaces(document.getElementById('txtCompare').value);` `if (str1 == str2) return true;return false;}` `/* Remove spaces from Captcha Code */function removeSpaces(string) {return string.split(' ').join('');}</script>` `</head><body` `onload="GenerateCaptcha();"><h2>Generating Captcha Demo</h2><input` `type="text"` `id="txtCaptcha"` `style="text-align: center; border: none; font-weight: bold; font-family: Modern"` `/><input` `type="button"` `id="btnrefresh"` `value="Refresh"` `onclick="GenerateCaptcha();"` `/><input` `type="text"` `id="txtCompare"` `/><input` `id="btnValid"` `type="button"` `value="Check"` `onclick="alert(ValidCaptcha());"` `/></body></html>` |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
