3

私は以下のようなウェブページを持ってtextboxいます -

<asp:TextBox ID="txtNumber" runat="server" size="5" MaxLength="9" 
    AutoPostBack="True" OnTextChanged="txtNumber_TextChanged" 
    CssClass="txtBoxPage" Style="margin-left: 3px;" 
    Visible="false" onblur="return [some JS function] false;">
</asp:TextBox>

ユーザーがNothingie ('') を入力textboxしてカーソルを外側に移動すると、textboxトリガーPostbackされないようにする機能が必要です。現在、onblurイベントが戻った後でもトリガーされていますfalse

4

3 に答える 3

4

テキストボックスの値が空の場合TextChanged、以下のようにイベントを抑制することができます -

  • onblur 関数を削除し、代わりに onchange を使用します。
  • Page_Load に次の行を追加します -

    protected void Page_Load(object sender, EventArgs e)
    {
        txtNumber.Attributes.Add("onchange", "if(checkEmptyValue(this)) {return false; }");
    }
    
  • 次の JavaScript をマークアップに含めます -

    String.prototype.trim = function() {     return this.replace(/^\s+|\s+$/g, ""); }; 
    
    function checkEmptyValue(o) {
        if (o.value == '' || o.value.trim() == '')
            return true;
        else
            return false;
    }
    

上記のコードを試して、うまくいくかどうか教えてください。

于 2012-10-10T10:47:05.333 に答える
2
document.getElementById('txtnumber').onchange=function(){
    if(this.value!=""){
        _doPostBack('txtNumber',this.value);
    }
}

その後、Request["__EVENTARGUMENT"] エントリを使用して値を取得できます。また、必ず AutoPostback をオフにしてください。

編集: txtNumber_TextChanged ハンドラー内で、たとえば:

private void txtNumber_TextChanged handler
{
    Response.Write(Request["__EVENTARGUMENT"]);
    //Writes the value of the TextBox. Basically, EVENTARGUMENT is the second argument passed when calling _doPostBack
}

txtNumber オブジェクトを使用して txtNumber の値にアクセスできるため (従来どおり)、これは完全にオプションであることに注意してください。

編集: document.getElementById を使用して要素への参照を取得する場合は、クライアント ID を引数として渡す必要があることに注意してください。たとえば、txtNumber オブジェクトが FormView1 という名前の FormView 内にある場合、結果のクライアント ID は FormView1_txtNumber になります。コードに次のいずれかの変更を加えると、問題が解決するはずです。

1) JavaScript が aspx ページの script タグにある場合は、単純に次のように変更document.getElementById('txtNumber')します。document.getElementById('<%= txtNumber.ClientID %>')

2) 外部の js ファイルを使用している場合は、js ファイルを呼び出す前に、aspx ページに次のスクリプト タグを変更document.getElementById('txtNumber')して挿入します。document.getElementById(txtNumberClientID)

<script type="text/javascript">
    window.txtNumberClientID='<%= txtNumber.ClientID %>';
</script>

これがうまくいくかどうか教えてください

于 2012-10-10T06:36:59.347 に答える