jQuery远程验证阻止提交按钮发布值

时间:2018-04-26 13:39:57

标签: javascript php jquery html codeigniter-3

在我的表单中,有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>

jquery验证码:

$("#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 :(得分:0)

使用按钮type="submit",您将直接提交表单(无论您点击哪个按钮都无关紧要。)

因此,您的按钮不是输入元素,这就是您在提交表单后看不到预期值的原因。

你可以创建隐藏字段,根据按钮点击填写一些值然后你知道你点击了哪个按钮,或者创建下面的jQuery函数

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

您的提交按钮更改按钮类型,调用您的功能,如onClick="return test()"

答案 1 :(得分:0)

最后,我找到了适合我的答案。

jquery代码有变化。我添加了2个更改忽略:[] &amp;远程条件下的 async:false 解决了我的问题。

jquery表单验证码:

$("#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",
    },
});