gpt4 book ai didi

javascript - 当我尝试将表单设置为清理时,脏表单出错

转载 作者:行者123 更新时间:2023-11-29 22:06:36 25 4
gpt4 key购买 nike

我有一个表单,我试图监视它以查看它何时变为“脏”(已更改),以便我可以启用“保存更改”按钮。这很简单。在 $(document).ready() 部分,我在我的表单上启用了 dirtyForms。

$(".dirtyForm").dirtyForms();

然后,我从 ajax 调用加载表单,在同一个函数中,我将它设置为 clean,然后开始调用一个函数来检查它何时变脏。

$(".dirtyForm").dirtyForms("setClean");
constant = setInterval(function(){checkDirty()}, 500);

这是我检查何时变脏的函数。顺便说一句,如果有人知道执行此部分的更好方法,请告诉我。

function checkDirty(){
if ($.DirtyForms.isDirty()){
$(".saveDirtyForm").removeAttr("disabled");
$(".resetDirtyForm").removeAttr("disabled");
console.log("Dirty...");
clearTimeout(constant);
}
}

你会注意到在 checkDirty 函数中,它有 clearTimeout(constant) 来阻止函数在表单变脏后继续重复。到目前为止,这一切都很好。这些按钮一直处于禁用状态,直到我更改某些内容然后几乎立即启用。当我记忆起使用更多信息加载表单的 ajax 函数时,问题就来了。当它重置表单时,它会在设置为清理时给出错误。它说,

Uncaught TypeError: Object function ( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
} has no method 'facebox'

这个错误在 jquery.dirtyForms.js 文件中。它不会设置表单以再次清理和启动监视功能。有谁知道我做错了什么?

这是 zeroflagL 询问的函数。

        function getOrderDets(id){
$.ajax({
url: DONEP+"blueBlob/donors/"+donorID+"/orders/"+id,
type: "GET",
dataType: "json",
success: function(data){
console.log(data);
dataSec = data.main.aResultData[0];
//Clear Fields
$("#orderIdTag").text('');
$("#orderNum").val('');
$("#doPlaced").val('');
$("#doShip").val('');
$("#dTrack").val('');
$("#doNote").val('');
//Set Main fields
$("#orderIdTag").text(dataSec.OrderID);
$("#orderNum").val(dataSec.OrderNumber);
$("#doPlaced").val(dataSec.OrderDate);
$("#doShip").val(dataSec.ShipDate);
$("#dTrack").val(dataSec.TrackingNumber);
$("#doNote").val(dataSec.OrderNote);
//Clean Dirty Form
$(".dirtyForm").dirtyForms("setClean");
constant = setInterval(function(){checkDirty()}, 500);
//Set Table
$(".orderDetTable").dataTable({
aaData: data.array,
"bAutoWidth": false,
"bDestroy": true,
"aoColumnDefs" : [
{"sWidth" : "13%", "sTitle" : "Quantity", "mData" : "Quantity", aTargets : [0]},
{"sTitle" : "Code", "mData" : "Code", aTargets : [1]},
{"sTitle" : "Amount", "mData" : "Amount", aTargets : [2]},
{"sWidth" : "6%", "sTitle" : "", "mData" : "OrderDetailsID", aTargets : [3], "mRender" : function(data, type, full){
return "<a href='#'><i class='glyphicon glyphicon-pencil orderDetEdit' id='"+data+"'></i></a>";
}}
]
});
}
});
}

这是 facebox 调用的堆栈跟踪。

$.facebox@http://dev.mysite.info/details.php?id=63#:540
.DirtyForms.dialog.fire@http://dev.mysite.info/assets/js/jquery.dirtyforms.js:25
bindFn@http://dev.mysite.info/assets/js/jquery.dirtyforms.js:421
aBindFn@http://dev.mysite.info/assets/js/jquery.dirtyforms.js:311
jQuery.event.dispatch@http://dev.mysite.info/assets/js/jquery.js:5095
jQuery.event.add/elemData.handle@http://dev.mysite.info/assets/js/jquery.js:4766

最佳答案

第一步是在更改表单中的任何内容(包括数据表)后调用setClean


如果这只是错误,那么这里有一个 hack。如果您在最后期限内,这将帮助您完成任务,并且还可以帮助您进行调试:

if ( typeof $.facebox !== 'function' )
{
$.facebox = function(){
var console = window['console'];
if ( console && console.error ){
console.error( 'Warning: $.facebox() was called', arguments );
}
return $();
}
}

另一个提示:如果您多次包含同一个 jQuery 库,您的插件可能无法工作。

要解决这个问题,请使用以下魔法在您的代码库中搜索所有 jquery 实例:

grep -o 'jquery:[^"]*"1\....' -R *

这将搜索 jQuery.fn.version 字符串。


您还需要检查插件是否正常工作。尝试检查以下内容:


编辑:获取堆栈跟踪以查看调用 facebox 函数的内容:

$.facebox = function(){
alert( new Error().stack );
};

关于javascript - 当我尝试将表单设置为清理时,脏表单出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20663154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com