Удаленная проверка JQuery предотвращает отправку значений кнопки - PullRequest
0 голосов
/ 26 апреля 2018

В моей форме есть 2 кнопки отправки (сохранить и выйти, затем) и удаленная проверка дублирования адреса электронной почты. работает нормально при отправке формы я не получаю, какая кнопка отправки нажата.

form.php

<form method="post" action="" id="user_reg_form" name="user_reg_form">
    <input class="form-control" id="user_id" value="<?php echo ($user->user_id!='')? $user->user_id:'0'; ?>" type="hidden" name="user_id">
    <div class="no-padding">
        <div class="col-md-12">
            <div class="form-group no-margin">
                <label>Email:</label>
                <input type="text" class="form-control" name="email" id="email" value="<?php echo ($user->email!='')? $user->email:''; ?>" maxlength="50">
            </div>
        </div>
    <div class="col-md-6">
        <div class="form-group no-margin">
            <label> Name</label>
            <input type="text" class="form-control" name="name" id="name" value="<?php echo ($user->name!='')? $user->name:''; ?>" maxlength="50">
        </div>
    </div>
    <div class="footer-btn" style="text-align:left;">
        <input type="submit" name="save_exit" id="save_exit" class="btn btn-primary"  value="Save & Exit"/>
        <input type="submit" name="next" id="next"  class="btn btn-success"  value="Next"/> 
        <a href="<?=base_url('home/user')?>" class="btn btn-default">Cancel</a> 
    </div>
</form>

Код подтверждения запроса:

$("#reg_form").validate({
    rules: {
        email:{
            required:true,
            remote: 
            {
                url: "<?php echo base_url('home/check_email_duplication')?>",   
                type: "post",
                data: { 'user_id': function() { return $("#user_id").val()},'email': function() { return $("#email").val()}},           
            },
        },
        name: "required",
    },
});

После отправки формы выведите массив $ _POST:

Действие контроллера пользователя:

public function user_reg()
{
    print_r($_POST);
}

Кнопка 1 Нажмите:

Array ( 
    [user_id] => 14 
    [email] => test@test.com
    [name] => yyyy 
)

Кнопка 2 Нажмите:

Array ( 
    [user_id] => 14 
    [email] => test@test.com
    [name] => yyyy 
)

Но мне нужен ниже ожидаемый ответ в массиве $ _POST: Нужно указать значение кнопки подтверждения, чтобы узнать, какая кнопка отправки.

Кнопка 1 Нажмите:

Array ( 
    [user_id] => 14 
    [email] => test@test.com
    [name] => yyyy 
    [next] => Next 
)

Кнопка 2 Нажмите:

Array ( 
    [user_id] => 14 
    [email] => test@test.com
    [name] => yyyy 
    [save_exit] => Save & Exit 
)

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Наконец-то я нашел ответ, который мне подходит.

Произошло изменение в коде jquery. Я добавил 2 изменения игнорировать: [] & async: false в удаленном состоянии, это решило мою проблему.

Код проверки формы запроса:

$("#reg_form").validate({
    ignore: [],
    rules: {
        email:{
            required:true,
            remote: 
            {
                url: "<?php echo base_url('home/check_email_duplication')?>",   
                type: "post",
                data: { 'user_id': function() { return $("#user_id").val()},'email': function() { return $("#email").val()}}, 
                async: false,         
            },
        },
        name: "required",
    },
});
0 голосов
/ 26 апреля 2018

с кнопкой type="submit" вы отправляете форму напрямую (не имеет значения, на какую кнопку вы нажали).

Таким образом, ваша кнопка не является элементом ввода, и именно поэтому вы не видите ожидаемое значение после отправки формы.

Вы можете создать скрытое поле, которое будет заполнять какое-то значение на основе нажатия кнопки, а затем вы знаете, на какую кнопку вы нажали, или создать функцию jQuery ниже, например

function test() {
    let input1 = $('#input1).val();
.
.
.
$('#form).submit();
} 

и где ваши кнопки отправки изменяют тип кнопки, которая вызывает вашу функцию, например onClick="return test()"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...