2009-11-30 6 views
0

나는 이것 모두에 익숙하지 않으므로 친절하십시오! 좋아, 현재 다음과 같은 시나리오가 있습니다.양식 데이터 재설정하기, 라디오 버튼에 초점 맞추기

  1. 이 계단식 드롭 다운 목록 (ddlbuyer이 ddlSub, ddlProd) 및 관련 라디오 버튼 (radProd)

  2. 자동 완성 텍스트 상자가 검색 :

    나는 제품 상세 정보를 검색하는 세 가지 방법이 제품 정보 (txtPrdAC)

  3. 사용자가보고 싶은 항목 수를 입력하고 (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

가능한 한 부드럽게 ... 귀하의 질문에 약간의 혼란이 있습니다. 귀하의 질문에 C#과 자바 스크립트로 태그가 지정됩니다. 당신은 분명히 당신이 "C#에서 이것을해라."라고 말하고있다. 그러나 귀하의 코드 예제는 자바 스크립트입니다. 또한 "코드 숨김"asp.net 기능을 참조하십시오. 다시 질문하고 질문을 수정 해 주셔서 정말로 필요한 것이 무엇인지 100 % 명확하게 알려주십시오. (즉, asp.net을 수행하는 경우 해당 태그로 태그를 지정하고 해당 문구를 질문에 포함 시키십시오.) 감사합니다 –

답변

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); 

말했다되는 것을 I 이것이 정확히 당신이 원하는 행동인지 완전히 모르겠습니다. 사용자가이 텍스트 상자 중 하나를 클릭 할 때마다 다른 모든 컨트롤의 값이 지워지므로 이러한 필드가 상호 배타적이지 않고 사용자가 전체 필드를 채울 수있는 방법을 볼 수 없습니다 그 중 하나에 데이터를 입력해야합니다. 그렇지 않으면 특정 조건에서 제어 값만 지우려면이 논리를 수정하는 것이 좋습니다.

또한 onclick 대신 onblur 이벤트를 사용할 수도 있습니다. 사용자는 컨트롤을 클릭하는 대신 포커스를 탭 할 수 있습니다.이 경우에는 onclick 이벤트가 실행되지 않을 것이라고 생각합니다. 포커스가 컨트롤을 벗어날 때마다 onblur 이벤트가 트리거됩니다. 사용자가 컨트롤의 값을 실제로 변경했는지 또는 컨트롤에 초점을 맞추고 떠난지를 감지 할 수있는 자바 스크립트 코드를 더 추가하거나 추가해야 할 수도 있습니다.

+0

포인터에 대해 감사드립니다. Wily 박사 - 당신이 말한 것처럼, 나는 논리의 일부를 다듬어야한다고 생각합니다. 그러나 이것은 제가 잘할 수있는 초보자를위한 것 같습니다. 나를 찾아 주셔서 감사합니다. – MrDean

관련 문제