首页 文章

PHP-jQuery:带有2个按钮和2个动作的表单 . 第二个按钮调用第一个按钮的操作

提问于
浏览
0

我有一个包含2个动作的表单,每当我尝试执行第二个动作时,第一个动作由于某种原因被调用 .

第一个操作是使用从数据库检索的一些数据搜索和填充表单 . 这部分有效 .

第二个操作是在手动将一些附加数据输入表单后提交表单 . 出于某种原因,每当我点击第二个按钮时,第一个按钮的功能就会被执行,而第二个按钮的功能却不会被执行 .

我在每个单独的脚本中都有单击功能 .

First Function:

<script>
$('document').ready(function()
{
    $('#register-submit-btn').attr('disabled', 'disabled');
    $("#find-details-btn").click(function(){
     /* validation */
    $("#register-form").validate({
      rules:
      {
            id: {
            required: true,
            minlength: 11,
            },
            second_id: {
            required: true,
            minlength: 6,
            },
            enter_date: {
            required: true,
            },
       },
       messages:
       {
            id:{
                      required: "Message Here.",
                      minlength: "Message Here",
                     },
            second_id:{
                      required: "Message Here.",
                      minlength: "Message Here",
                     },
            enter_date:{
                      required: "Message Here.",
                     },
       },
       submitHandler: checkGetData
       });

   function checkGetData()
   {
        var data = $("#register-form").serialize();
        $.ajax({
        type : 'POST',
        url  : 'validate_get_data.php',
        data : data,
        cache: false,
        beforeSend: function()
        {
            $("#detailsmsg").fadeOut();
            $("#find-details-btn").html('<img src="include/btn-ajax-loader.gif" /> &nbsp; Searching...');
            $('#find-details-btn').attr('disabled', 'disabled');
        },

        success :  function()
           {
                //some actions go here to populate data into proper fields.
           }
        });
        return false;
      } 
   });
});
</script>

second script

<script>
$('document').ready(function()
{
    $("#register-submit-btn").click(function(){

            var data = $("#register-form").serialize();

            $.ajax({
            type : 'POST',
            url  : 'update_data.php',
            data : data,
            cache: false,
            beforeSend: function()
            {
                $("#detailsmsg").fadeOut();
                $("#register-submit-btn").html('<img src="include/btn-ajax-loader.gif" /> &nbsp; Sending...');
                $('#register-submit-btn').attr('disabled', 'disabled');
                $('#find-details-btn').attr('disabled', 'disabled');
            },
            success :  function(data)
               {
//Actions to display a success message after data is inserted goes here.
                    }
                });
                    return false;
            //}
        }
    });
});
</script>

当点击register-submit-btn时 . 我得到的是当我点击find-details-btn时应该触发的第一个脚本的动作 . 事实上,当我点击register-submit-btn时,甚至会执行find-details-btn的动画 .

任何想法为什么第二个按钮工作就好像它是第一个按钮?

提前致谢,

EDIT: Added Form structure per request.

<form class="register-form" id="register-form" action="" method="POST">             
        <div class="form-group">
            <label class="control-label bold">ID</label>
            <input class="form-control placeholder-no-fix" type="text" maxlength="11" placeholder="Cedula Number" id="first_id" name="first_id" /> 
        </div>

        <div class="form-actions">
        <button type="submit" name="find-details-btn" id="find-details-btn" class="btn btn-success uppercase">Find Details</button>
        </div>

        <div class="alert alert-danger display-hide" id="detailsmsg">
            <!-- messages goes here -->
        </div>

        <div id="details_found" class="hidden">
        <p class="font-blue bold"> Details Found </p>
        <div class="form-group">
            <label class="control-label">Name</label>
            <input class="form-control placeholder-no-fix" type="text" value="" id="f_name" name="f_name" readonly /> </div>
            <div class="form-group">
            <label class="control-label">Second ID</label>
            <input class="form-control placeholder-no-fix" type="text" value="" id="second_id" name="second_id" readonly /> 
        </div>
        <p class="font-blue bold"> Enter your details below: </p>
        <div class="form-group">
            <label class="control-label">Details 1</label>
            <input class="form-control placeholder-no-fix" type="text" autocomplete="off" placeholder="" id="details_1" name="details_1" />
        </div>
        <div class="form-group">
            <label class="control-label">Details 2</label>
            <input class="form-control placeholder-no-fix" type="text" autocomplete="off" placeholder="" id="details_2" name="details_2" /> 
        </div>
        <div class="form-group">
            <label class="control-label">Details 3</label>
            <input class="form-control placeholder-no-fix" type="text" autocomplete="off" placeholder="" id="details_3" name="details_3" /> 
        </div>

        </div>
        <div class="form-actions">
            <button type="button" id="register-back-btn" name="register-back-btn" class="btn green btn-outline">Back</button>
            <button type="submit" id="register-submit-btn" name="register-submit-btn" class="btn btn-success uppercase pull-right">Submit</button>
        </div>
    </form>

1 回答

  • 1

    从我的第二个脚本中可以看出,您正在调用AJAX请求并希望显示成功消息 . 但是你不是在提交表格 .

    这可能是您的问题的原因 . 当您尝试进行AJAX调用时,请阻止重定向页面的其他事件实际查看响应 . 您的代码应如下所示 .

    <script>
    $('document').ready(function()
    
    {
        $("#register-submit-btn").click(function(e){
    
                e.preventDefault();
    
                var data = $("#register-form").serialize();
    
                $.ajax({
                type : 'POST',
                url  : 'update_data.php',
                data : data,
                cache: false,
                beforeSend: function()
                {
                    $("#detailsmsg").fadeOut();
                    $("#register-submit-btn").html('<img src="include/btn-ajax-loader.gif" /> &nbsp; Sending...');
                    $('#register-submit-btn').attr('disabled', 'disabled');
                    $('#find-details-btn').attr('disabled', 'disabled');
                },
                success :  function(data)
                   {
    //Actions to display a success message after data is inserted goes here.
                        }
                    });
                        return false;
                //}
            }
        });
    });
    </script>
    

    这会阻止它提交,只会将请求发送到网址 .

    现在,如果您的数据没有得到更新,那么PHP脚本就是这种情况 . 如果您仍然无法更新记录,请调试PHP脚本或发布PHP脚本块以获取更多信息 .

    快乐的编码^ _ ^

相关问题