-1

クライアント関数を使用してテキストボックスをクリアしているので(server control runat = "server")、jqueryを使用してクリアすると空に見えますが、コードをトレースしてテキストボックスをチェックすると、nullではなく値が見つかりましたしたがって、クライアント側からのテキストボックスコントロールのvalueプロパティからもクリアする方法(ユーザーとの対話のためにクライアントからクリアする必要があります)

私はクライアント側のコードからそれをクリアするために以下を使用しています:

$("#cp1_txtDeathDate").val("");

これは私のコントロールのコードです:

<asp:TextBox ID="txtDeathDate" runat="server" ></asp:TextBox> 

コードビハインド:

if (txtDeathDate.Text != "" && DatePattern.IsMatch(txtDeathDate.Text))
{
//do something
}

ファイアバグトレースで:

<input id="cp1_txtDeathDate" type="text" value="26/10/2012" name="ctl00$cp1$txtDeathDate"> // while textbox appeared empty

ユーザーがチェックボックスの値を(イベントクリック)で変更すると、JavaScriptコードを呼び出します

        function checkDead_click() {


            if ($("#cp1_chDead").prop("checked") == false) {
                $("#cp1_drpDeathReason").attr('disabled', 'disabled');
                $("#cp1_txtDeathDate").attr('disabled', 'disabled');
                $('#divDeath input#cp1_radDMR_0').attr('checked', true);
                $("#divDeath input:radio").attr("disabled", true);
                $("#cp1_drpDeathReason").html("");
                $("#cp1_txtDeathDate").val("");
            }
            else {
                $("#cp1_drpDeathReason").removeAttr('disabled');
                $("#cp1_txtDeathDate").removeAttr('disabled');
                $("#divDeath input:radio").removeAttr('disabled');
            }

        }

$("#cp1_chDead").click(checkDead_click);


protected void Saveform()
    {
        Demographic Demo = new Demographic();


            using (DBEntities DB = new DBEntities())
            {
                try
                {
                    if (hdFormMode.Value == "edit")
                    {
                        string nid = Session["NID"].ToString();
                        Demo = DB.Demographics.SingleOrDefault<Demographic>(d => d.NID == nid);
                    }
                    if (Demo != null || hdFormMode.Value == "new")
                    {

                        Demo.NID = litNID.Text;
                        Demo.BirthDate= txtBirthDate.Text;
                        Demo.FirstName = txtFirstN.Text;
                        Demo.FatherName = txtFatherN.Text;
                        Demo.GrandFName = txtGrandFN.Text;
                        Demo.FamilyName = txtFamilyN.Text;

                        if (txtDeathDate.Text != "" && DatePattern.IsMatch(txtDeathDate.Text))
                        {

                            Demo.DeathDate = txtDeathDate.Text;
                            Demo.RealDeathDate = Convert.ToByte("1");
                         }


                        else
                        {
                            Demo.DeathDate = null;

                        }
                        if (chDead.Checked)
                            Demo.Dead = Convert.ToByte("1");
                        else
                        {
                            Demo.Dead = null;
                            Demo.DeathReason = null;
                            Demo.RealDeathDate = null;
                            Demo.DeathDate = null;

                        }

                        if (hdFormMode.Value == "new")
                        {
                            CreateDemo(Demo);

                        }
                        else
                        {
                            if (Demo.EntityState == EntityState.Detached)
                            {

                                DB.AttachTo("DBEntities.Dempographics", Demo);
                            }
                            DB.ObjectStateManager.ChangeObjectState(Demo, EntityState.Modified);
                            DB.SaveChanges();
                        }

                    }
                }
                catch (Exception ex)
                {
                    throw;
                }
            }
        }

    }
4

3 に答える 3

1

これを使用して、サーバー コントロールのクライアント ID を取得する必要があります。

var txtDeathDate = "<%= txtDeathDate.ClientID %>";

//in your actual code should be
$("<%= txtDeathDate.ClientID %>").val("");

また、コードビハインドでこれを試してください

 if (String.IsNullOrEmpty(txtDeathDate.Text) && DatePattern.IsMatch(txtDeathDate.Text))
 {

    Demo.DeathDate = txtDeathDate.Text;
    Demo.RealDeathDate = Convert.ToByte("1");
 }

最後に、ブレーク ポイントを配置してコードをデバッグし、テキスト ボックスと変数の値を確認します。お役に立てれば!

于 2012-11-11T06:27:45.473 に答える
0
  1. コード ビハインドの textbox.Text は、空の場合でも常に値 (String.Empty) を持ちます。nullにはなりません
  2. runat=server は値を変更するため、そのような ID で参照することはできません。$("#<%= YOURTEXTBOX.ClientID %>") のように YOURTEXTBOX.ClientID のようなことをする必要があります。

参照方法の実際のコードを表示するように編集されました。ClientID 経由

于 2012-11-11T06:26:09.370 に答える
0

これを試して、コードを次のように置き換えてください...

$("#" + "<%=txtbox.CliendID%>").val("");

これは仕事になります....

于 2012-11-11T06:30:21.003 に答える