Javascript按钮onclick()未触发
我试图找出为什么我的javascript在单击按钮时没有运行。我检查了javascript文件是否正确加载,控制台中是否有错误。当我在控制台中运行javascript代码时,代码成功地运行并执行它应该执行的操作,但是当我单击按钮时,它不会启动。我相信我所有的语法都是正确的,所以我不确定是什么导致了这个问题 下面是按钮的HTML:Javascript按钮onclick()未触发,javascript,jquery,html,Javascript,Jquery,Html,我试图找出为什么我的javascript在单击按钮时没有运行。我检查了javascript文件是否正确加载,控制台中是否有错误。当我在控制台中运行javascript代码时,代码成功地运行并执行它应该执行的操作,但是当我单击按钮时,它不会启动。我相信我所有的语法都是正确的,所以我不确定是什么导致了这个问题 下面是按钮的HTML: <input class="btnSaveParameters" id="btn_SaveCriteria" onclick="return btn_SaveCr
<input class="btnSaveParameters" id="btn_SaveCriteria" onclick="return btn_SaveCriteria_onclick();" type="button" value="Save Subscription"/>
function btn_SaveCriteria_onclick() {
//Testing if function fires:
window.alert(5 + 6);
var availableSelects = [];
$("Select").each(function () {
availableSelects.push($(this).attr("id"));
});
if (
$("#" + availableSelects[1])
.find(":selected")
.text() + $("#" + availableSelects[2])
.find(":selected")
.text()+$("#" + availableSelects[2])
.find(":selected").text() ==='AllAllAll'
) {
$(".PageTitle").append("<div id='dialog' title='Parameter Warning'>You cannot select all for all 3 filters</div>");
$("#dialog").dialog();
} else {
var t = document.getElementById("modal-form").cloneNode(true);
t.style.display = "inline";
var options = {
title : "Add a Description to your Subscription",
width : 500,
height : 100,
dialogReturnValueCallback : MyDialogClosed,
html: t
};
};
SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);
}
}
下面是在控制台中正确运行的Javascript函数,但单击按钮时不会触发该函数:
<input class="btnSaveParameters" id="btn_SaveCriteria" onclick="return btn_SaveCriteria_onclick();" type="button" value="Save Subscription"/>
function btn_SaveCriteria_onclick() {
//Testing if function fires:
window.alert(5 + 6);
var availableSelects = [];
$("Select").each(function () {
availableSelects.push($(this).attr("id"));
});
if (
$("#" + availableSelects[1])
.find(":selected")
.text() + $("#" + availableSelects[2])
.find(":selected")
.text()+$("#" + availableSelects[2])
.find(":selected").text() ==='AllAllAll'
) {
$(".PageTitle").append("<div id='dialog' title='Parameter Warning'>You cannot select all for all 3 filters</div>");
$("#dialog").dialog();
} else {
var t = document.getElementById("modal-form").cloneNode(true);
t.style.display = "inline";
var options = {
title : "Add a Description to your Subscription",
width : 500,
height : 100,
dialogReturnValueCallback : MyDialogClosed,
html: t
};
};
SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);
}
}
函数btn\u SaveCriteria\u onclick(){
//测试函数是否触发:
窗口警报(5+6);
var availableSelects=[];
$(“选择”)。每个(函数(){
可用选择.push($(this.attr(“id”));
});
如果(
$(“#”+可用选择[1])
.find(“:选定”)
.text()+$(“#”+可用选择[2])
.find(“:选定”)
.text()+$(“#”+可用选择[2])
.find(“:selected”).text()
) {
$(“.PageTitle”).append(“您不能为所有3个筛选器选择全部”);
$(“#dialog”).dialog();
}否则{
var t=document.getElementById(“模态形式”).cloneNode(true);
t、 style.display=“inline”;
变量选项={
标题:“向订阅添加说明”,
宽度:500,
身高:100,
dialogReturnValueCallback:MyDialogClosed,
html:t
};
};
SP.SOD.execute('SP.ui.dialog.js','SP.ui.ModalDialog.showModalDialog',选项);
}
}
有人知道为什么javascript没有通过单击按钮触发吗?可能onclick事件没有找到函数,因为它超出了范围 要确保使用jquery附加事件,请执行以下操作: 我进行了测试并正在进行以下工作:
//这将再次点击btn\u保存标准按钮。
$(函数(){
$('#btn_SaveCriteria')。单击(函数(){btn_SaveCriteria_onclick();});
});
//这是你不变的功能
函数btn\u SaveCriteria\u onclick(){
//测试函数是否触发:
窗口警报(5+6);
var availableSelects=[];
$(“选择”)。每个(函数(){
可用选择.push($(this.attr(“id”));
});
如果($(“#“+可用性选择[1]).find(“:selected”).text()+$(“#“+可用性选择[2]).find(“:selected”).text()+$(“#“+可用性选择[2]).find(“:selected”).text()=='allall'){
$(“.PageTitle”).append(“您不能为所有3个筛选器选择全部”);
$(“#dialog”).dialog();
}否则{
var t=document.getElementById(“模态形式”).cloneNode(true);
t、 style.display=“inline”;
var options={title:“向订阅添加说明”,宽度:500,高度:100,dialogReturnValueCallback:MyDialogClosed,html:t};//$('将函数放入脚本标记中,置于输入按钮标记上方。
在html文件中:
函数btn\u SaveCriteria\u onclick(){
//测试函数是否触发:
警戒(5+6);
var availableSelects=[];
$(“选择”)。每个(函数(){
可用选择.push($(this.attr(“id”));
});
如果($(“#“+可用性选择[1]).find(“:selected”).text()+$(“#“+可用性选择[2]).find(“:selected”).text()+$(“#“+可用性选择[2]).find(“:selected”).text()=='allall'){
$(“.PageTitle”).append(“您不能为所有3个筛选器选择全部”);
$(“#dialog”).dialog();
}否则{
var t=document.getElementById(“模态形式”).cloneNode(true);
t、 style.display=“inline”;
var options={title:“为订阅添加说明”,宽度:500,高度:100,dialogReturnValueCallback:MyDialogClosed,html:t};//$('感谢大家的输入
我能够得到启动javascript函数的按钮,但我不知道它为什么会工作
我创建了一个新函数并将其连接到按钮上
function test2() { window.alert(1+1);}
这个测试函数在单击按钮时被激发。然后我尝试将其余的代码添加到test2函数中。这也被激发。看到这一点,我将原来的函数名从
btn_SaveCriteria_onclick()
到
并删除了test2函数。出于某种原因,将名称更改为test()有效,javascript启动。因此,解决方案是将函数名称从btn_SaveCriteria_onclick()更改为其他名称,我将其更改为saveSubscriptionOnClick()
我不知道为什么会这样,或者为什么这是一个问题,但我会接受它。你试过onclick=“btn\u SaveCriteria\u onclick();”
?@GaryJohnson yes Iv试过删除“return”,没有luckCan你放了一把小提琴?如果你可能错过了,是btn\u SaveCriteria\u onclick())
是在另一个函数中定义的吗?是否有任何方式表明该函数不在正确的范围内?您是否检查了控制台中的错误您的代码正在工作。我尝试使用此方法,并使用刚刚弹出的11值发出警报是的,正在工作,我不知道为什么人们对我的答案o给出-2。o 11结果是@Reeggiie original发出的警报请记住,除非您将函数声明为var func=function(){..}
javascript不太关心它们的顺序。@Reeggiie使用我的示例了解它的工作情况。我没有更改您的函数。我只是用不同的绑定方式附加它。可能是因为绑定事件时不需要该函数而被否决了,您只需将btn\u SaveCriteria\u onclick()
传递给它:$(“#btn_SaveCriteria”)。单击(btn_SaveCriteria_onclick);
test()