3

onkeydown 属性を asp:textbox に追加しようとしています。何らかの理由で、私のコードはログイン ビュー内にあるテキスト ボックスを見つけることができません。

私は何か間違ったことをしていますか?

<script type="text/javascript">
window.onload = function() {
    UserName.Attributes.Add("onKeyDown", "KeyDownHandler('" + btn.ClientID + "')");
    Password.Attributes.Add("onKeyDown", "KeyDownHandler('" + btn.ClientID + "')");
}

function KeyDownHandler(btn)
{
    if (event.keyCode == 13)
    {
        event.returnValue=false;    
        event.cancel = true;
        document.getElementById(btn).click();
    }
}
</script>
4

3 に答える 3

1

コードは、クライアント スクリプトにイベント ハンドラー属性を追加しようとしています。これは、サーバー側のコード ブロックで発生する必要があります。何かのようなもの:

<script runat="server"> 
    UserName.Attributes.Add("onKeyDown", "KeyDownHandler('" + btn.ClientID + "')"); 
    Password.Attributes.Add("onKeyDown", "KeyDownHandler('" + btn.ClientID + "')"); 
</script>
<script type="text/javascript">
function KeyDownHandler(btn) 
{ 
    if (event.keyCode == 13) 
    { 
        event.returnValue=false;     
        event.cancel = true; 
        document.getElementById(btn).click(); 
    } 
} 
</script> 

別の方法として、コード ビハインド ページがある場合は、PreRender イベントに属性.Add 呼び出しを配置し​​ます。

于 2010-06-09T13:21:51.383 に答える
0

aspxファイルで、既存のUserNameおよびPasswordテキストボックスをKeyDownHandlerと呼ばれるクライアントイベントハンドラーにバインドするサーバースクリプトを追加します。

<script runat="server">
   protected void Page_Load(object sender, EventArgs e)
   {
      TextBox userNameControl = FindControl("UserName") as TextBox;
      TextBox passwordControl = FindControl("Password") as TextBox;

      if (userNameControl != null)
         userNameControl.Attributes.Add("onKeyDown", "KeyDownHandler(this)"); 

      if (passwordControl != null)
         passwordControl.Attributes.Add("onKeyDown", "KeyDownHandler(this)"); 
   }
</script>

次に、イベントハンドラーのクライアントスクリプトを宣言します。

<script type="text/javascript">
function KeyDownHandler(domButton) 
{ 
    if (event.keyCode == 13) 
    { 
        event.returnValue=false;     
        event.cancel = true; 
        domButton.click(); 
    } 
} 
</script>
于 2010-06-09T13:57:22.187 に答える
-1

イベント ハンドラ パラメータを次のように配線してみてください。

<script type="text/javascript">
    window.onload = function() {
    UserName.Attributes.Add("onKeyDown", "KeyDownHandler(this)");
    Password.Attributes.Add("onKeyDown", "KeyDownHandler(this)");
}

function KeyDownHandler(domButton)
{
    if (event.keyCode == 13)
    {
        event.returnValue=false;    
        event.cancel = true;
        domButton.click();
    }
}
</script>
于 2010-06-09T13:17:59.910 に答える