根据条件在 JQuery 表单插件中提交回调之前删除项目

removing items on beforeSubmit callback in JQuery Form Plugin depending on conditions

本文关键字:回调 提交 删除项目 插件 条件 JQuery 表单      更新时间:2023-09-26

我有以下代码,它们使用 JQUERY Form 插件在带有 ajax 的服务器上提交数据:

initForm: function() {
                //submit form function
                var options = {
                    delegation: true,
                    dataType: "json",
                    beforeSubmit: function(arr, $form, options) {
                        console.log(viewCtrl.dliProductsChanged);
                        for (var j = 0; j < arr.length; j++){
                            var obj = arr[j];
                            //always returns -1
                            if( viewCtrl.dliProductsChanged.indexOf(obj.value) != -1 ){
                                console.log('HERE');
                            }
                        }
                        $form.find( ".submit-button" ).button( "loading" );
                        $form.find( ".discount-value, .trucking" ).addClass( "uneditable-input" );
                        $form.find( ".discount-type" ).attr( "readonly", true );
                    },
                    success: function(responseText, statusText, xhr, $form) {
                        if ( responseText.status == "success" ) {
                            viewCtrl.modal.modal( "hide" );
                            $.growl.notice({ title: "<strong>Saved</strong>", message: responseText.message, size: "large", duration: 5000, location: "br" });
                        } else {
                            viewCtrl.modal.find( ".modal-content" ).html( responseText.form );
                        }
                        $form.find( ".submit-button" ).button( "reset" );
                    }
                };
                $( "#manage-products-form" ).ajaxForm( options );
},

现在我想在提交之前过滤一些项目。我想删除不在viewCtrl.dliProductsChanged中的项目。但是,当我检查特定项目是否在viewCtrl.dliProductsChanged时,它总是返回-1。但我确信这个项目在那里,因为我做了很多console.log().

这些是我记录的

viewCtrl.dliProductsChanged
[1899年]

OBJ 内部 ARR

对象 {name: "ci_inventorybundle_discountlevelitemcollectiontype[discountLevelItemProducts][0][variant]",值:"1899",类型:"隐藏",必需:true}

这里似乎有什么问题?谢谢。

数组包含整数值,但obj.value是字符串。试试这个。

if( viewCtrl.dliProductsChanged.indexOf(Number(obj.value)) != -1 ){
    console.log('HERE');
}