Gag*_*ege 4 javascript c# asp.net webforms
我需要在ASP.net控件事件的onblur事件中将客户端ID传递给Javascript函数,如下所示:
OnBlur="javascript:setBackground(this, '<%= txtClientName.ClientID %>')"
Run Code Online (Sandbox Code Playgroud)
这是我的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;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是客户端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 %>')" />
Run Code Online (Sandbox Code Playgroud)
或者看到这个Stack Overflow答案:
在asp:超链接中分配声明性值的问题.错误:这不是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>
Run Code Online (Sandbox Code Playgroud)