我有一些其他的 javascript 函数,它们是在我正在使用的文本框的 onfocus 和 onblur 事件上设置的。在这些函数中,它调用与任何控件无关的通用 javascript 函数。我想知道如何简单地将此函数从后面的代码吐出到页面的 html 中。像这样的……
Page.ClientScript.RegisterStartupScript(this.GetType(), "?????", getCounter);
编辑:这就是我的意思
public class MVADTextBox : TextBox
{
protected override void OnLoad(EventArgs e)
{
var getCounter = "<script language=\"javascript\">" +
"function GetCounter(input) {" +
//this function gets the number of special characters taht are in a row.
//it is only the grouping of characters that are right after your current position
"var textbox = document.getElementById(input.id);" +
"var mask = textbox.getAttribute('Mask');" +
"var inputCharacters = textbox.getAttribute('InputCharacters');" +
"var tbid = \"#\" + input.id;" +
"var position = $(tbid).caret().start;" +
"var counter = 0;" +
"for (var i = position; i < mask.length; i++) {" +
" if (mask[i] != '#') {" +
" counter++;" +
" if (mask[i + 1] == '#') {" +
" break;" +
" }" +
" }" +
"}" +
"return counter;" +
" }" +
"</script>";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "OnFocus", onFocus);
Page.ClientScript.RegisterStartupScript(this.GetType(), "GetCounter(input)", getCounter);
var onBlur = "<script language=\"javascript\"> function PopulateField(input) {if (input.value == \"\") {input.value = input.defaultValue; input.className = 'sampleText'; } } </script>";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "OnFocus", onFocus);
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "OnBlur", onBlur);
}
}
正在将 on blur 方法发送到页面。
最佳答案
答案:
我相信 Page.ClientScript
已被弃用。您应该使用 ClientScriptManager
。
将您的 "??????"
替换为脚本的名称。老实说,脚本的名称几乎没用(除非您稍后需要检查它是否存在)。
ClientScriptManager.RegisterStartupScript(this.GetType(), "myCount", getCounter);
用法说明:
//You must surround your code with script tags when not passing the bool param
ClientScriptManager.RegisterStartupScript(this.GetType(),
"myCount",
"<script>alert('Hey')</script>");
// The last param tells .Net to surround your
// code with script tags (true) or not (false)
ClientScriptManager.RegisterStartupScript(this.GetType(),
"myCount",
"alert('Hey')", true);
附加信息:
来自 MSDN 的签名:
public void RegisterStartupScript(
Type type,
string key,
string script
)
public void RegisterStartupScript(
Type type,
string key,
string script,
bool addScriptTags
)
参见:http://msdn.microsoft.com/en-us/library/system.web.ui.clientscriptmanager.registerstartupscript.aspx
关于javascript - 从后面的代码将 javascript 放在页面上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8358571/