2011-08-20 67 views
2

我有一个帐户管理页面,可让用户更改自己的信息。我想要一个复选框,当他们点击一个文本框开始编辑它时,他们知道,程序知道什么会被更新。我想我可以用回发来做到这一点,但我希望尽可能避免多余的回传。动态检查asp net复选框无回发

我认为这可以用JavaScript来完成......但我不知道如何。

- 编辑 -

@Muhammad阿赫塔尔

我做了一个空白页面,并试图在这里,这是代码:

<%@ Page Title="" Language="C#" MasterPageFile="~/BlueBlack.Master" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="LinkFactory.WebForm2" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="Head" runat="server"> 
<script type="text/javascript"> 
function update() 
{ 
    if(document.getElementById('<%=check.ClientID %>').value != '') 
    { 
    document.getElementById('<%=check.ClientID %>').checked = true; 
    } 
    else 
    { 
    document.getElementById('<%=check.ClientID %>').checked = false; 
    } 

} 
</script> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
    <asp:CheckBox ID="check" runat="server" /> 
    <asp:TextBox ID="TextBox1" runat="server" onkeypress="update();"></asp:TextBox> 
</asp:Content> 

- 编辑2 -

关于答案:

我在页面的标题中使用了他的脚本。出于某种原因,我需要输入2个字符,它的工作,但我认为这是正常的

回答

1

您可以使用onkeypress事件并调用JS功能

<asp:TextBox ID="TextBox1" runat="server" onkeypress="update();"></asp:TextBox> 

function update() 
{ 
    if(document.getElementById('<%=TextBoxID.ClientID %>').value != '') 
    { 
    document.getElementById('<%=CheckBoxID.ClientID %>').checked = true; 
    } 
    else 
    { 
    document.getElementById('<%=CheckBoxID.ClientID %>').checked = false; 
    } 

} 
+0

我试过了,现在我觉得我做错了什么。我尝试了应付和粘贴到aspx文件中......没有骰子。所以我把第一行放在aspx文件和头文件中的函数中,用''包围,那也没用。 –

+0

您可以发布您在JavaScript中尝试过的完整代码吗? –

+0

刚刚发布......但我确实注意到Visual Studio给了我一个消息:'验证(ASP.Net):属性'onkeypress'不是元素'TextBox'的有效属性。' –

1

你可以在Javascript中做到这一点,而无需添加内嵌事件您的标记,这使得它看起来更好,更易于维护:

document.getElementById('<%=TextBoxID.ClientID %>').focus = function() { 
    document.getElementByID('<%=CheckBoxID.ClientID %>').checked = true; 
} 

这是假设你想要当焦点放在文本框的事件触发。

+0

我将此添加到页面的标题,它似乎不工作...我做错了什么?我确实将TextBoxID和CheckBoxId更改为相应的ID。 –

+0

@ Adam8797您是否收到任何Javascript错误? – thomasvdb

+0

不是我能说的。如果你能告诉我在哪里看,我会检查 –