Javascript 从代码隐藏调用jQuery函数
我想从代码后面调用jQuery函数,因为我必须为函数发送变量。 我在代码隐藏中使用了此代码:Javascript 从代码隐藏调用jQuery函数,javascript,jquery,asp.net,code-behind,Javascript,Jquery,Asp.net,Code Behind,我想从代码后面调用jQuery函数,因为我必须为函数发送变量。 我在代码隐藏中使用了此代码: ClientScript.RegisterClientScriptBlock(this.GetType(), "myfunction", "ValidateTB("+ num+ "," + count +");", true); 我的职能是: function ValidateTB(num,count) { var check = false; alert("alert");
ClientScript.RegisterClientScriptBlock(this.GetType(), "myfunction", "ValidateTB("+ num+ "," + count +");", true);
我的职能是:
function ValidateTB(num,count) {
var check = false;
alert("alert");
for (var i = 0; i < num; i = i + 1) {
check = false;
for (var j = 0; j < count; j = j + 1) {
var id = "myTextBox" + i + j;
if ($("input[type='text']").val().length > 0) {
check = true;
}
if (check == false) {
$("#error").text("error");
return false;
}
}
}
return true;
};
函数ValidateTB(num,count){
var检查=假;
警报(“警报”);
对于(变量i=0;i0){
检查=正确;
}
如果(检查==false){
$(“错误”).text(“错误”);
返回false;
}
}
}
返回true;
};
为什么我的函数不起作用?听起来我的函数没有运行请确保在
部分的
块中声明此函数 您的代码应该如下所示
ClientScript.RegisterClientScriptBlock(this.GetType(), "myfunction", "return ValidateTB("+ num+ "," + count +");", true);
jquery函数返回true或false值,因此在调用函数时必须写“return”。从codebehind调用任何jquery代码时,请确保代码周围有$(document)。就绪。您需要将codebehind呼叫更改为以下内容:
ClientScript.RegisterClientScriptBlock(this.GetType(), "myfunction", "$(document).ready(function(){ValidateTB('"+ num+ "','" + count +"');});", true);
改用
RegisterStartupScript
假设我们有以下jquery类“ChangeDate”,其中包含一些属性和在选择过程中将调用的OnSelect事件,那么如果我们想在codebehind中使用该类并对其进行更改,那么一种方法是使用stringbuilder并按如下操作:
$(document).ready(function () {
$('.ChangeDate').datepicker({
beforeShowDay: $.datepicker.noWeekends,
changeMonth: true,
changeYear: true,
dateFormat: 'mm/dd/yy',
yearRange: '-100:+100',
showButtonPanel: true,
onSelect: function (date) {
sMsg = sMsg + getErrorMessage('HME0002');
if (confirm(sMsg) == true) {
$('.ChangeDate').val('As of ' + date);
$(this).datepicker("hide");
return true;
}
else {
$('.ChangeDate').val('As of ' + oldD);
return false;
}
}
}); });
在codebehind中使用StringBuilder并向其附加所需的函数,并使用RegisterClientScriptBlock调用它,如下所示
StringBuilder sb = new StringBuilder();
sb.Append("$(document).ready(function () {");
sb.Append("$('.ChangeDate').val('As of " + DateTime.Now.ToString("MM/dd/yyyy") + "');");
sb.Append("});");
BuildJSString("KEY", sb.ToString());
private void BuildJSString(string keyStr, string scriptStr)
{
ClientScript.RegisterClientScriptBlock(this.GetType(), keyStr, scriptStr,true);
}
那么这应该行得通。您是否在javascript控制台中收到一些错误消息?检查DOM以查看相应的调用。你能看到吗?我没有错,你是什么意思?当我在IE中从外部脚本调试器调试JavaScript函数时,它不会出现在我的函数中。我不会使用Internet Explorer进行web开发。看看萤火虫,当然有。您只是在函数中放置了一个断点。我对它进行了测试,但没有显示我在函数的第一行添加的警报。您是否从“Page_Load”方法调用了您的函数?如果是,则必须将其包含在“!IsPostBack”中。否,我从按钮单击方法调用了我的函数!试着多做一些案例。在你的论点中加上一个引语。这对我来说很有效。你有错误吗?请在浏览器控制台中进行检查。