Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从代码隐藏调用jQuery函数_Javascript_Jquery_Asp.net_Code Behind - Fatal编程技术网

Javascript 从代码隐藏调用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");

我想从代码后面调用jQuery函数,因为我必须为函数发送变量。 我在代码隐藏中使用了此代码:

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”中。否,我从按钮单击方法调用了我的函数!试着多做一些案例。在你的论点中加上一个引语。这对我来说很有效。你有错误吗?请在浏览器控制台中进行检查。