不使用提交按钮即可检测PHP表单中的任何更改

时间:2019-09-23 09:26:10

标签: php jquery html ajax

我需要帮助。现在,我试图创建一个可以检测PHP表单中任何更改值的函数。现在,我正在使用CodeIgniter。我将对此进行详细说明。

我正在建立一个电子商务网站。如果用户在购物车页面并更改了数量,但该用户尚未结帐,并且仍想浏览更多...,则当用户必须更改数量并按到另一个页面时。它将显示弹出警报。该弹出警报具有保存更改数量的功能。但是如果用户什么也没改变。弹出警报不应显示。

我已经在菜单中设置了它。

<?php echo form_open('order_products_execute', 'class="order_form"'); ?>
                <?php include(VIEWPATH.'_order_parts.html') ?>
                <div class="common_btn_area">
                    <input type="hidden" name="branch_id" value="<?php echo $branch_id; ?>">
                    <button type="button" class="add_cart_more">add more</button>
                    <button type="submit" class="common_save_btn confirmation">Order</button>
                </div>
<?php echo form_close(); ?>

<!-- footer menu -->
<ul>
    <li>
       <a href="<?php echo base_url('top/'); ?>" class="footer_link" onclick="ExitCart('<?php echo base_url('top/'); ?>')" >
         <span>Home</span>
       </a>
    </li>
    <li>
       <a href="<?php echo base_url('product/'); ?>" class="footer_link" onclick="ExitCart('<?php echo base_url('product/'); ?>')" >
         <span>Product</span>
       </a>
    </li>
</ul>

并设置脚本

<script>
function ExitCart(link){
            var $form = $('.order_form');

            #code for compare previous value with changing value
            $.ajax( {
                type: $form.attr('method'),
                url : "/buyer/ajax/compare_form_add_cart",
                dataType : "json",
                data : $form.serialize(),
                success : function(resultdata) {
                    if(resultdata){
                        if(confirm("Do you want to save your changes?")){
                            #if confirm yes
                            $.ajax({
                                type: 'post',
                                url: '/buyer/Ajax/add_order_data_in_cart_session',
                                data: $('.order_form').serialize(),
                                dataType: 'json',
                                success: function(res, textStatus, xhr){
                                    if(res.result) {
                                        location.href = link;
                                    } else {
                                        $( "#loading_layer" ).css('display', 'none');
                                        alert('Failed to save cart data. Please try again.');
                                    }
                                }
                            });
                        }else{
                            #if confirm not
                            location.href = link;
                        };
                    }else{
                        return true;
                    }
                }
            });
}
</script>

当我实现此ajax代码时,有时该代码可以正常工作。但是有时候不是。是否有任何代码可以检测到表单中的任何更改。但是没有按下提交按钮。

2 个答案:

答案 0 :(得分:0)

在jQuery中,您可以绑定所有输入更改

$('.order_form input').change(functon(){
var $form = $('.order_form');

            #code for compare previous value with changing value
            $.ajax( {
                type: $form.attr('method'),
                url : "/buyer/ajax/compare_form_add_cart",
                dataType : "json",
                data : $form.serialize(),
                success : function(resultdata) {
                    if(resultdata){
                        if(confirm("Do you want to save your changes?")){
                            #if confirm yes
                            $.ajax({
                                type: 'post',
                                url: '/buyer/Ajax/add_order_data_in_cart_session',
                                data: $('.order_form').serialize(),
                                dataType: 'json',
                                success: function(res, textStatus, xhr){
                                    if(res.result) {
                                        location.href = link;
                                    } else {
                                        $( "#loading_layer" ).css('display', 'none');
                                        alert('Failed to save cart data. Please try again.');
                                    }
                                }
                            });
                        }else{
                            #if confirm not
                            location.href = link;
                        };
                    }else{
                        return true;
                    }
                }
            });
})

答案 1 :(得分:0)

例如,您需要复制输入字段

// Input Field (TEXT)
< input type="text" id="input1" value="Same Value" />

// Hidden Input for comparison
< input type="hidden" value="Same Value" />

点击功能,您应该将这些字段进行比较

function ExitCart(link){
     // Get Input Value
     var val = $.trim($('#input1').val());

    // Get Reference Value from next input
    var valChk = $.trim($('#input1').next().val());

    if(val != valChk) {
        YOUR CODE HERE
    }    
}