繁体   English   中英

在不使用提交按钮的情况下检测 PHP 表单的任何更改

[英]Detect any change from PHP form without using submit button

我需要帮助。 现在我尝试创建一个 function 可以检测 PHP 表单中的任何更改值。 现在我正在使用 CodeIgniter。 我对此进行了更详细的解释。

我做一个电子商务网站。 如果用户在购物车页面中并更改了数量但用户尚未结帐并且仍想浏览更多......当用户必须更改数量并按到另一个页面时。 它将显示弹出警报。 此弹出警报有一个 function 以保存更改的数量。 但是如果用户没有改变任何东西。 不应显示弹出警报。

我已经在菜单中设置了这个。

<?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 代码时,有时代码可以正常工作。 但有时并非如此。 是否有任何代码可以检测表单的任何更改。 但没有按下提交按钮。

在 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;
                    }
                }
            });
})

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

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

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

在单击 function 时,您应该比较这些字段,例如

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
    }    
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM