В первый раз, когда я отправляю один из триггеров, дублирующая отправка выполняется, но последующие происходят только один раз.
Я использовал метод protectDefault (), но все равно отправляется дважды в первый раз, а последующие отправляются только один раз.
Форма
<?php $form = ActiveForm::begin(['id' => 'verify_form']); ?>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="control-label">Identity Type <span class="error">*</span></label>
<?php echo $form->field($identitiesModel, 'type')->dropDownList($identitiesModel->identityTypes(), [
'prompt' => 'Select an identity',
'class' => 'form-control',
'required' => true
])->label(false) ?>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="control-label">Identification Number <span class="error">*</span></label>
<?php echo $form->field($identitiesModel, 'identificationId')->textInput([
'class' => 'form-control',
'required' => true
])->label(false) ?>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="control-label">Last name <span class="error">*</span></label>
<?php echo $form->field($identitiesModel, 'lastname')->textInput([
'class' => 'form-control',
'placeholder'=> 'Last name',
'required' => true
])->label(false) ?>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="control-label">First name <span class="error">*</span></label>
<?php echo $form->field($identitiesModel, 'firstname')->textInput([
'class' => 'form-control',
'placeholder'=> 'First name',
'required' => true
])->label(false) ?>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="control-label">Date of Birth <span class="error">*</span></label>
<?php echo $form->field($identitiesModel, 'date_of_birth')->widget(DatePicker::className([
'options' => [
'placeholder' => 'Select date of birth',
'class' => 'form-control',
],
'pluginOptions' => [
'format' => 'Y-m-d',
'todayHighlight' => true,
]
]))->label(false) ?>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<button type="submit" class="btn btn-success subBtn">Search</button>
<button type="reset" class="btn btn-default clearBtn">Clear</button>
</div>
</div>
</div>
<?php ActiveForm::end(); ?>
JS Code
$(document).ready(function(){
$('#verify_form').submit(function(event){
event.preventDefault()
$('.otherResult').empty();
let x = $('#verify_form #verificationform-date_of_birth').val();
if(x.length == 0){
swalFunc('info','Oops...','Date of birth must be filled');
return false;
}
$('#verify_form .subBtn').attr('disabled', true);
let formValues = $(this).serialize();
let link = '".Url::toRoute("api/verification-search")."';
$.ajax({
type: 'POST',
url: link,
data: formValues,
beforeSend: function(){
$('.loadImage').css({'display': 'block'});
},
success:function(data){
$('#verify_form .subBtn').removeAttr('disabled');
socket.emit('identity', data);
},
complete:function(){
$('.loadImage').css({'display': 'none'});
}
});
return false;
});
})
Я ожидал, что вызов ajax будет вызываться один раз при каждом запуске кнопки отправки, но приведенный выше код отправляется дважды при первом запуске, даже если кнопка отправкищелкнули один раз, и это приводит к дублированию записей.