Manoj Damor

Unlock the World of Coding with Coding Funda

How to Validate User Input on Keypress Event in Vue.js with Laravel

How to Validate User Input on Keypress Event in Vue.js with Laravel

How to Validate User Input on Keypress Event in Vue.js with Laravel

To validate user input on the keypress event in Vue.js within a Laravel project, you can use Vue directives like @keypress or v-on:keypress to capture and validate the input.


Example 1: Allow Only Numbers

If you want to restrict the input to numbers:

<template>
    <div>
        <label>Enter Number:</label>
        <input
            type="text"
            v-model="number"
            @keypress="validateNumber"
            placeholder="Only numbers allowed"
        />
        <p v-if="error">{{ error }}</p>
    </div>
</template>

<script>
export default {
    data() {
        return {
            number: '',
            error: ''
        };
    },
    methods: {
        validateNumber(event) {
            const charCode = event.keyCode || event.which;

            // Allow only digits (0-9)
            if (charCode < 48 || charCode > 57) {
                this.error = 'Only numbers are allowed!';
                event.preventDefault();
            } else {
                this.error = '';
            }
        },
    },
};
</script>

<style>
p {
    color: red;
}
</style>

Example 2: Allow Only Letters

If you want to restrict input to alphabet characters:

<template>
    <div>
        <label>Enter Text:</label>
        <input
            type="text"
            v-model="text"
            @keypress="validateText"
            placeholder="Only letters allowed"
        />
        <p v-if="error">{{ error }}</p>
    </div>
</template>

<script>
export default {
    data() {
        return {
            text: '',
            error: ''
        };
    },
    methods: {
        validateText(event) {
            const char = String.fromCharCode(event.keyCode || event.which);
            const pattern = /^[a-zA-Z]*$/; // Regex for letters only

            if (!pattern.test(char)) {
                this.error = 'Only letters are allowed!';
                event.preventDefault();
            } else {
                this.error = '';
            }
        },
    },
};
</script>

Example 3: Validate Input Length

To limit input length (e.g., max 10 characters):

<template>
    <div>
        <label>Enter Name (Max 10 chars):</label>
        <input
            type="text"
            v-model="name"
            @keypress="limitLength"
            placeholder="Max 10 characters"
        />
    </div>
</template>

<script>
export default {
    data() {
        return {
            name: '',
        };
    },
    methods: {
        limitLength(event) {
            if (this.name.length >= 10) {
                event.preventDefault(); // Stop further input
            }
        },
    },
};
</script>

Example 4: Validate Email Pattern

If you want to validate email on the fly:

<template>
    <div>
        <label>Email:</label>
        <input
            type="text"
            v-model="email"
            @keypress="validateEmail"
            placeholder="Enter your email"
        />
        <p v-if="error">{{ error }}</p>
    </div>
</template>

<script>
export default {
    data() {
        return {
            email: '',
            error: '',
        };
    },
    methods: {
        validateEmail() {
            const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;

            if (!emailPattern.test(this.email)) {
                this.error = 'Invalid email address!';
            } else {
                this.error = '';
            }
        },
    },
};
</script>

Laravel Validation Example

If you want to validate input on the server-side using Laravel, you can pass the input to a Laravel route and validate it.

routes/web.php

use Illuminate\Http\Request;

Route::post('/validate-input', function (Request $request) {
    $request->validate([
        'name' => 'required|string|max:10',
    ]);

    return response()->json(['message' => 'Valid input']);
});

Would you like a more advanced validation or have any other input requirements? 😊

Auther : Manoj Damor

Check Our website : https://www.techbytework.com/

Check blog website : https://manojdamor.com

Blog link : https://www.manojdamor.com/how-to-fix-missing-assets-after-removing-public-from-laravel-11-urls/

Blog Application Link : https://play.google.com/store/apps/details?id=com.parthhightech.codingfunda

About The Author

Leave a Reply

Your email address will not be published. Required fields are marked *

Follow by Email
fb-share-icon
Share