У меня есть 2 формы одна обычная
<form id="payment" name="payment" method="post" action="https://sci.interkassa.com/" enctype="utf-8"
target="_blank">
<input type="hidden" name="ik_co_id" value="hdjfhjsdjsdhkj7833jfjsdhf"/>
<input type="hidden" name="ik_pm_no" value="ID_<?= rand(1000, 9999) ?>"/>
<input type="hidden" name="ik_am" value="<?= $game->price ?>"/>
<input type="hidden" name="ik_cur" value="UAH"/>
<input type="hidden" name="ik_desc" value="<?= $game->name ?>"/>
</form>
и одна ActiveForm
<?php $form = ActiveForm::begin() ?>
<div class="buymail"><?= $form->field($model, 'email')->input('email')->label("E-mail *") ?></div><div class="checkaccept">
<?= $form->field($model, 'accept')
->checkbox([
'label' => 'Я ознакомлен с пользовательским соглашением и описанием товара*',
]) ?></div>
<div class="buybtn"><?= Html::submitButton('Перейти к оплате →', ['class' => 'asbtn subbtnbuy', 'onclick' => 'submitform()', 'disabled' => true]) ?></div>
<?php ActiveForm::end() ?>
Мне нужно както сделать так чтобы 1 обычная форма отправлялась после успешного заполнения 2 формы и нажатия на ее submit, сначало сделал так в js допсал
function submitform() {
document.payment.submit(); }
а на submit повесил обработчик onclick' => 'submitform()'
, но так 1 форма отправляется при любом нажатии на submit независимо от того прошла ли валидацию 2-я форма, потом сделал так установил атрибут submit 'disabled' => true, а в js написал так
var regex = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
$('#buy-accept').change(function(){
if(regex.test($('#buy-email').val())){
$(".subbtnbuy").prop("disabled", !$(this).is(':checked'));
} });
то есть кнопка будет неактивной пока пользователь не заполнит поля 2 формы а именно email и чекбокс, в принципе оно то и работает так как нужно но при этом никаких сообщений про незаполненные поля выдаваться не будет, да и потом если галочку поставить раньше чем заполнить поле с почтой придется ее опять снимать и ставить чтоб разблокировать кнопку submit. Вот такой вопрос можно как то к сабмиту одной формы прикрепить передачу допустим в новое окно другой формы, при этом чтобы передача 2 формы срабатывала после правильного заполнения первой, или как это можно сделать иначе чтобы передавалось 2 формы по нажатию на 1 submit, но после валидации полей той формы в которой указан submit?
Конечно, вкл/выкл кнопки - это самое простое решение. Но правильным было бы сделать валидацию и при клике на submit первой формы проверять валидность данных второй. Например переделать функцию submitform
:
var validateAlgoritm = {
email: {
rule: function (email) {
return /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(email);
},
errorText: 'Ваш e-mail не прошел валидацию'
}
},
$email = $('#buy-email');
function validateForm2() {
var result = {
status: true,
text: 'ok'
};
if(!validateAlgoritm.email.rule($email.val())) {
result.status = false;
result.text = validateAlgoritm.email.errorText;
}
return result;
};
function submitForm() {
var valid = validateForm2();
if(valid.status) {
document.payment.submit();
} else {
alert(valid.text);
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="email" id="buy-email">
<form id="payment" name="payment" method="post" action="https://sci.interkassa.com/" enctype="utf-8"
target="_blank">
<input type="hidden" name="ik_co_id" value="hdjfhjsdjsdhkj7833jfjsdhf"/>
<input type="hidden" name="ik_pm_no" value="ID_<?= rand(1000, 9999) ?>"/>
<input type="hidden" name="ik_am" value="<?= $game->price ?>"/>
<input type="hidden" name="ik_cur" value="UAH"/>
<input type="hidden" name="ik_desc" value="<?= $game->name ?>"/>
<input type="button" value="send" onclick="submitForm()">
</form>
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
При попытке вызвать функцию MyApp_HighlightAllOccurencesOfString() из WebView
Всем приветЕсть таск для гранта, может кто помочь перевести его в таск для галпа? Чтобы синтаксис был верен
Как красиво расположить и, по возможности, добавлять и редактировать блоки организующей схемы компании с использованием Ajax?