如何使用jQuery清除服务器文本框



我正在使用客户端函数清除文本框(服务器控制runat =" server"),因此,当我使用jQuery清除它时,它会显示为空,但是当我跟踪代码并检查文本框时。

我正在使用以下内容从客户端代码清除它:

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

这是我控件的代码:

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

在背后的代码中:

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

在Firebug Trace:

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

您应该使用它来获取服务器控制的客户端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");
 }

最后,提出一个断点并调试您的代码,并查看文本框和变量的值。希望这会有所帮助!

  1. textbox.text在后面的代码中始终具有一个值(string.empty),即使是空的。它不会是无效的
  2. 您不能这样用ID引用,因为runat =服务器会更改值。您需要像$("#&lt;%= yourtextbox.clientid%>"中的yourtextbox.clientid这样的事情)

编辑以显示如何参考的实际代码。通过ClientId

尝试一下,用以下...

替换代码
$("#" + "<%=txtbox.CliendID%>").val("");

这将有效....

最新更新