问题描述
||
我需要在这样的ASP.net控件事件的onblur事件中将客户端ID传递给Javascript函数:
OnBlur=\"javascript:setBackground(this,\'<%= txtClientName.ClientID %>\')\"
这是我的Javascript函数:
function setBackground(sender,controlID) {
sender.style.backgroundColor = \"#ffffff\";
var nextElement = document.getElementById(controlID);
if ((nextElement.value == \'\' || nextElement.value == \'Select\') && tab == true) {
nextElement.style.backgroundColor = \"#f7C059\"
tab = false;
}
}
问题是客户端ID的字面传递为\'<%= txtClientName.ClientID%> \',而不是实际值。因此,调用document.getElementById(controlID);不起作用。
如何获取实际的客户端ID并将其传递给Javascript函数?
解决方法
您可以将asp.net控件更改为标准html元素(即,不使用runat = \“ server \”)
<asp:TextBox ID=\"TextBox1\" runat=\"server\"></asp:TextBox>
<input type=\"text\" id=\"ClientText1\" onblur=\"javascript:alert(\'<%= TextBox1.ClientID %>\')\" />
或查看此堆栈溢出答案:
在asp:hyperlink中分配声明性值时出现问题。错误:这不是scriptlet。将输出为纯文本
或使用jQuery
<script type=\"text/javascript\" src=\"//ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"> </script>
<script type=\"text/javascript\">
$(document).ready(function () {
$(\"#text2\").blur(function(){alert(\'<%= TextBox1.ClientID %>\')});
});
</script>
, 这是背后的代码吗?
OnBlur=String.Format(\"javascript:setBackground(this,\'{0}\')\",txtClientName.ClientID);
怎么样
, <asp:TextBox ID=\"TextBox1\" runat=\"server\" onclick=\"dosomething(this)\"></asp:TextBox>
<script>
function dosomething(obj)
{
var txtObj= document.getElementById(obj.id);
alert (txtObj);
}
</script>
从函数中传递此对象,并可以从javascript中获取this.id,即ClientID