如何从外部jQuery文件调用HTML函数并在Mouseup后自动执行逻辑
实现外部JS完成Mouseup后自动执行HTML中的函数
我来一步步帮你搞定这个需求,核心就是把按钮绑定的逻辑抽成独立可调用的函数,然后在外部JS的Mouseup事件流程结束后直接触发它:
1. 把按钮点击逻辑抽成全局可访问的命名函数
首先修改你HTML里的脚本,把原来绑定在按钮点击上的代码拆成一个单独的命名函数,并且确保它能被全局访问(这样外部JS才能找到并调用它):
// 把原来的按钮点击逻辑抽成独立函数 function handleTimingSubmit() { var sheetStates = sheet.getSheetStates(); var rowsCount = 15; var colsCount = 7; // 当前未使用,后续将用于testData.match var timesheetrowsdata = ""; var timesheetcoldata = ""; for(var row= 0, rowStates=[]; row<rowsCount; ++row){ rowStates = sheetStates[row]; timesheetrowsdata += rowStates+(row==rowsCount-1?'':','); } timesheetcoldata = timesheetrowsdata.replace(/,/g, ''); const testData = timesheetcoldata; const dataArr = testData.match(/.{1,7}/g) .map(s => Number(s[0])) let dataSum = dataArr.reduce((a, b) => a + b); let isSameAsRowsCount = dataSum == rowsCount; // 这里可以继续编写你后续要加的修改图标/图片的逻辑 } // 原来的按钮点击绑定可以保留(如果需要临时测试),或者直接删掉按钮后移除这行 $("#J_timingSubmit2").click(handleTimingSubmit);
如果你的脚本是包裹在$(document).ready()里的,要确保函数能被外部访问,可把它挂载到window对象上:
$(document).ready(function() { // 挂载到window,确保外部JS能访问到这个函数 window.handleTimingSubmit = function() { // 上面的逻辑代码 }; });
2. 在timesheet_test.js的Mouseup事件中调用该函数
找到你timesheet_test.js里的Mouseup处理逻辑,在完成单元格背景色修改的代码之后,直接调用handleTimingSubmit()即可:
// 你的Mouseup原逻辑 Mouseup: if (targetStateValue === "earlyshift") { var endCell = [14,curColHead.data("col")]; var correctedCells = cellCompare(operationArea.startCell,endCell); afterSelecting(ev,correctedCells); // 在这里添加调用,自动执行HTML中的函数 handleTimingSubmit(); }
3. 移除按钮(可选)
如果你完全不需要这个按钮了,直接删掉HTML里的<button class="J_sheetControl" id="J_timingSubmit2">Submit</button>就行。
关键注意点
- 确保HTML里的脚本在
timesheet_test.js之前加载,这样当外部JS执行Mouseup逻辑时,handleTimingSubmit函数已经存在了。 - 确认
sheet对象能被handleTimingSubmit函数访问到(比如sheet是全局变量,或者函数定义在能访问到sheet的作用域里)。
内容的提问来源于stack exchange,提问作者user11853168
相关产品推荐
相关产品推荐

