2010-10-03 46 views
1

我有4个asp:表单上的文本框字段。为简单起见,ID是A1,A2和B1,B2。 如果任何一个As或Bs被填充,我需要隐藏另一个。所以我在A1中输入一些内容,隐藏A2,在B2中输入内容,隐藏B1。在asp.net中我怎样才能动态地隐藏一个字段基于他人的价值?

我以为我可以使用JavaScript的OnBlur事件来做到这一点,但它不会做任何不幸的事情。我试图让字段出现/消失而不必做回发。

任何建议或例子会很好。

感谢, Q

+1

展示问题的任何代码示例将是巨大的。 – Oded 2010-10-03 19:00:28

+0

是啊,对不起,今天不在工作,所以我没有机会获得我的编码...可能应该写明天。 – Quayludious 2010-10-03 19:17:00

回答

0

事件触发onKeyDown添加到您的四个文本框(你可以阅读有关的按键事件处理程序的位置:http://help.dottoro.com/ljlkwans.php),并使用处理程序来隐藏不需要的文本框中。或者,如果你只是想禁用,而不是隐藏它这会为你工作:

<asp:TextBox ID="A1" onKeyDown="disableText('A2')" runat="server"></asp:TextBox> 

然后对JavaScript的:

function disableText(textbox) 
{ 
    document.getElementById(textbox).disabled=true; 
} 
+0

他为什么需要AJAX?他所要做的就是在客户端。这是纯粹的JavaScript。 – 2010-10-03 19:23:47

+0

@Oren A:好点,你不需要AJAX,不知道我在想什么...... – 2010-10-03 19:25:58

+0

看着那个代码,逻辑思考它,那会禁用它,但让我们说他们想要删除所有文本,然后使用A2而不是A1,您需要添加一个检查功能,看看文本框是否为空,然后取消隐藏所有“A”文本框。 – 2010-10-03 19:37:04

0

与jQuery

$(function(){ 
    $('#A1').blur(function(){ 
    if ($('#A1').value() == "") 
    { 
     $('#A2').fadeIn(); 
    } 
    else 
    { 
     $('#A2').fadeOut(); 
    } 
    }); 
}); 

但如果你”重新使用主页面的ID将是不同的!

+0

lol @ jQuery,似乎没有人想要写香草JS了:) – Marko 2010-10-03 19:56:13

+1

没有人使用jquery或类似的框架会想要使用香草js,它相比之下很糟糕。 – 2010-10-03 21:59:17

1

一块蛋糕,并且没有jQuery的:P

<script> 
    function txtChange(x1, x2){ 
     x1=document.getElementById(x1); 
     x2=document.getElementById(x2); 
     x2.style['display'] = (x1.value.length>0) ? 'none' : ''; 
    } 
</script> 

protected void Page_Load(object sender, EventArgs e) 
{ 
    a1.Attributes["onchange"] = string.Format("txtChange('{0}','{1}')", a1.ClientID, a2.ClientID); 
    a2.Attributes["onchange"] = string.Format("txtChange('{0}','{1}')", a2.ClientID, a1.ClientID); 
    b1.Attributes["onchange"] = string.Format("txtChange('{0}','{1}')", b1.ClientID, b2.ClientID); 
    b2.Attributes["onchange"] = string.Format("txtChange('{0}','{1}')", b2.ClientID, b1.ClientID); 
} 
相关问题