我是所有这一切的新手所以请温柔!好的,目前我有以下情况。
我有三种搜索产品详细信息的方法:
级联下拉列表(ddlbuyer,ddlSub,ddlProd)和相关的radiobutton(radProd)
搜索产品信息的自动填充文本框(txtPrdAC)
产品列表搜索,用户输入他们希望看到的项目数(txtHowMany),然后指定他们希望看到的子类别(radTopx)
我最理想的是以下情况。
用户只能使用上述列表中的一种搜索产品的方法。如果他们单击第一个ddl,则清除文本框中可能存在的任何数据。同样,如果他们单击txtPrdAC或txtHowMany,则清除ddl列表中存在的任何信息,并返回其原始的默认值。
我想在c#代码中执行此操作并且到目前为止已经获得了以下代码正在运行... ish!好吧,无论如何它都设置了单选按钮的焦点。
ddlProd.Attributes.Add("onchange", "return SetRadioFocus('"
+ radBuyer.ClientID + "');");
radTopx.Attributes.Add("onclick", "return SetRadioFocus('"
+ radTopx.SelectedItem + "');");
tbxProdAC.Attributes.Add("onclick", "return SetRadioFocus('"
+ radProd.ClientID + "');");
ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript", @"
function SetRadioFocus(target)
{
document.getElementById(target).checked = true;
}", true);
但是,我仍然缺少某些方面,即清理文本框和/或ddl。 再次,为无知道歉,但这已经引起了我的兴趣。感谢您提供帮助。
答案 0 :(得分:0)
我可以想象这个问题的完整解决方案可能相当复杂,但我认为这样做的简单解决方案可能如下:
ddlProd.Attributes.Add("onchange", "ResetDefaults('"+ddlProd.ClientID+"'); SetRadioFocus('"
+ radBuyer.ClientID + "');");
radTopx.Attributes.Add("onclick", "ResetDefaults('"+radTopx.ClientID+"'); SetRadioFocus('"
+ radTopx.SelectedItem + "');");
tbxProdAC.Attributes.Add("onclick", "ResetDefaults('"+tbxProdAC.ClientID+"'); SetRadioFocus('"
+ radProd.ClientID + "');");
ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript", @"
function ResetDefaults(exclude)
{
if(exclude != '" + ddlProd.ClientID + @"') document.getElementById('" + ddlProd.ClientID + @"').value = null;
if(exclude != '" + txtPrdAC.ClientID + @"') document.getElementById('" + txtPrdAC.ClientID + @"').value = "";
if(exclude != '" + txtHowMany.ClientID + @"') document.getElementById('" + txtHowMany.ClientID + @"').value = "";
}
function SetRadioFocus(target)
{
document.getElementById(target).checked = true;
}", true);
话虽如此,我并不完全确定这是否是您想要的行为。每当用户单击其中一个文本框时,所有其他控件中的值都将被清除,因此我看不到用户如何能够填写整个内容,除非这些字段是互斥的且用户只是应该将数据输入其中一个。否则,您可能需要考虑改进此逻辑,以便仅在某些条件下清除控制值。
此外,您可能希望使用onblur事件而不是onclick。用户可以将焦点标记到控件而不是单击它们,在这种情况下,我认为onclick事件不会被触发。只要焦点离开控件,就会触发onblur事件。您可能还需要/需要添加更多javascript代码,这些代码可以检测用户是否实际对控件的值进行了任何更改,或者是否只关注控件然后将其保留。