I have a search field and user can only input 2 or more characters:
<?php
use yii\helpers\Html;
use app\models\User;
use yii\helpers\ArrayHelper;
use kartik\form\ActiveForm;
use kartik\widgets\Select2;
use yii\helpers\Url;
$session = Yii::$app->session;
/* @var $this yii\web\View */
/* @var $model app\models\PayslipTemplateSearch */
/* @var $form yii\widgets\ActiveForm */
?>
<div class="searchbox" style="padding: 0; margin-right: 0px;">
<?php $form = ActiveForm::begin([
'action' => ['searchresults'],
'method' => 'get',
'id' => 'searchForm'
]); ?>
<div class="input-group">
<input type="text" class="form-control" name="keyword" pattern=".{2,}" title="Keyword should have a minimum of 2 characters" required>
<span class="input-group-btn">
<button class="btn btn-primary" type="button">🔍</button>
</span>
</div>
<span class="error">Enter at least two characters</span>
<?php ActiveForm::end(); ?>
</div>
<style type="text/css">
.error {
display: none;
font: italic medium sans-serif;
color: red;
}
input[pattern]:invalid ~ .error {
display: block;
}
</style>
<script>
$(function(){
$(".btn-primary").click( function(e){
e.preventDefault();
$('#searchForm').submit();
});
$('.dropdown-responsive').addClass('manageadmindd');
$('.select2-bootstrap-append').addClass('ddcontainer');
})
// function showError(txt)
// {
// var err = document.getElementById('error');
// err.innerHTML = txt;
// err.style.display = 'block';
// }
</script>
Now, if I hit the ENTER KEY, it will display this:

But, if I press that search button, it will redirect to the search results page with a PHP error because it doesn't receive any keyword.
So how do I prevent this from happening?
EDIT:
I put all my HTML code above. I am using Yii2 php framework.
patternattribute does the error message, I think.type="submit"attr to search button