2012-03-27 3 views
0

사용자가 여러 명의 작성자를 세미콜론으로 구분하여 입력 할 수있는 텍스트 상자가 있습니다. 초기에 텍스트 상자는 한 줄이지만 첫 번째 세미콜론에 사용자 유형을 입력하면 텍스트 상자가 여러 줄로 바뀝니다.한 줄 텍스트 상자에서 여러 줄 텍스트 상자로 변경하는 데 문제가 있습니다.

"Tab"또는 "ENTER"키를 클릭 한 경우에만 텍스트 상자를 여러 줄로 변경할 수 있습니다. 세미콜론 키를 클릭하면됩니다.


이 부분 프런트 엔드 코드 :

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      TextBoxDocCreaDate.Text = DateTime.Now.ToString("D"); 
     } 

    } 

    protected void TextBoxAuthorName_TextChanged(object sender, EventArgs e) 
    { 
     bool isSemicolonClick = false; 
     string context = TextBoxAuthorName.Text; 

     if (isSemicolonClick == false) 
     { 
      for (int i = 0; i < context.Length; i++) 
      { 
       if (char.Equals(context[i], ';')) 
       { 
        isSemicolonClick = true; 
        TextBoxAuthorName.TextMode = TextBoxMode.MultiLine; 
       } 
      } 
     } 
    }  

답변

1

당신은 정말 트랩 해당 서버에 할 수 없습니다 :

<!-- Report Author(s) Name(s) --> 
      <div class="row"> 
       <div class="leftSide"> 
        <asp:Label ID="LabelAuthorName" runat="server" Text="Author" /> 
       </div> 
       <div class="rightSide"> 
        <asp:TextBox ID="TextBoxAuthorName" runat="server" ToolTip="Author1; Author2; ...." 
         OnTextChanged="TextBoxAuthorName_TextChanged" AutoPostBack="True" ></asp:TextBox> 
       </div> 
      </div> 

이 부분 백엔드 코드는 당신이 각 키 입력 후에 포스트 백을하지 않는 한. 간단한 자바 스크립트 onkeypress 이벤트를 사용하여 세미콜론을 확인하고 거기에서 나가라고 제안하십시오. 그것은 세미 콜론의 (186)와 동일한 경우

function checkForSemiColon(e){ 
    var watchedkey = e.keyCode? e.keyCode : e.charCode 
    if(watchedkey = 186)..... 
    } 

그런 다음 텍스트 상자에, 그냥 = checkForSemiColor (이벤트) 때 onKeyPress 호출합니다.

+0

onkeypress를 사용할 수 없습니다. 그것은 경고를 준다 : 속성 'onkeypress'는 'TextBox'요소의 유효한 속성이 아니다. – yyc2001

+1

@ yyc2001 페이지의''다음에''. jQuery를 사용할 수 있다고 가정합니다. 개념은 기본 자바 스크립트로 더 많은 입력이 있지만 동일합니다. –

+0

@ yyc2001 정말로 그렇게 할 필요는 없지만. Visual Studio에서 경고를보고하지만 HTML 태그에서 올바르게 렌더링되어야합니다. –

관련 문제