从服务器端,我正在向客户端动态注入一个输入和按钮元素。我还想为每个注入一个JavaScript函数。输入的功能应该被触发onchange
而对于按钮,应该是onclick
这是我到目前为止所做的:
//js definition
string script = @"<script>";
script += @" function OnCroquis0BtnClick()
{
var fileUp = $('#File');
fileUp.trigger('click');
}";
script += @"function OnCroquis0FileSelected()
{
txtBx = document.getElementById('MainContent_txtBx');
var fileUpload = document.getElementById('File');
txtBx.value = fileUpload.files[0].name;
}";
script += @"</script>";
ClientScript.RegisterClientScriptBlock(GetType(), "testScript0" ,
script);
//html elemets definition
HtmlGenericControl input = new HtmlGenericControl(),
btn = new HtmlGenericControl();
input.TagName = "input";
input.ID = lbl.Text + "File";
input.Attributes["onchange"] = "OnCroquis0Fileselected()";
input.Attributes["style"] = "display: none;";
docRequeridosMainDiv.Controls.Add(input);
btn.TagName = "button";
btn.ID = "btn";
btn.InnerText = "Anejar";
btn.Attributes["onclick"] = "OnCroquis0BtnClick(); return false";
btn.Attributes["style"] = "margin-right:2%;";
docRequeridosMainDiv.Controls.Add(btn);
它们是可见的并且正在应用样式,但js不是。我想,因为任何html属性都是通过Attributes["attri"]
添加的,也许js函数也可以。
提前谢谢。
答案 0 :(得分:0)
尝试使用RegisterStartupScript而不是RegisterClientScriptBlock
Page.ClientScript.RegisterStartupScript(this.GetType(), "testscript0", script, false);
这强制在页面中的所有元素加载后执行该脚本。
答案 1 :(得分:0)
管理以使其正常运行。在我的版本中,我的功能名称放错位置:P