我有一个JavaScript函数如下:
function getWindowSize() {
test.value = $(window).width();
test2.value = $(window).height();
}
window.onresize = getWindowSize;
在ASP.NET页面中:
<input type="text" id="test2" value="Test"/>
<input type="text" id="test" value="Test"/>
这会在屏幕大小更改时填充字段。当我将页面元素设置为runat="server"
时,它们不会填充屏幕大小,也无法捕获服务器端。
有什么建议吗?
答案 0 :(得分:2)
如果您有服务器标记,则需要使用ClientID
。您当前没有使用getElementById,但您应该获取DOM元素以获得更好的浏览器兼容性。如果您有框架4及更高版本,则可以使用ClientIDMode并在没有ClientID
<强>的Javascript 强>
function getWindowSize() {
document.getElementById('<%= test.ClientID %>').value = $(window).width();
document.getElementById('<%= test2.ClientID %>').value = $(window).height();
}
window.onresize = getWindowSize;
<强> HTML 强>
<input type="text" id="test2" value="Test" runat="server" />
<input type="text" id="test" value="Test" runat="server" />
答案 1 :(得分:1)
由于我看不到完整的代码,我将假设ASP.NET用生成的代码替换Id属性(类似于_ctl $ Container $ test)。作为一种解决方法,如果你使用jQuery,你可以使用CSS类:
<强>的Javascript 强>
function getWindowSize() {
$('.WidthValue') = $(window).width();
$('.HeightValue') = $(window).height();
}
<强> HTML 强>
<input type="text" id="test" value="Test" class="WidthValue" runat="server" />
<input type="text" id="test2" value="Test" class="HeightValue" runat="server" />
答案 2 :(得分:0)
您使用的是Masterpages
吗?因为在使用主页添加ASP.NET
表单控件时,他们使用前缀来标识控件:
<input id="ctl00_ContentPlaceHolder1_txtName" class="textfield" type="text" name="ctl00$ContentPlaceHolder1$txtName">
ctl00_ContentPlaceHolder1 _ 是主页的前缀。
这可能是您的javascript函数未填充字段的原因。 你如何识别你的对象test和test2?