通过JQuery设置文本框值

我通过ajax文章设置一个TextBox控件的值.
$('#txtSite').val(msg.d.SiteName);

这是正常工作,TextBox的值正确更改.但是,当我将信息发布到数据库时,txtSite.Text值为空!

有任何想法吗?我生气了吗

代码填充TextBox

$.ajax({
    type:"POST",url: "MyPage.aspx/ValidateSite",data: "{ siteID: '" + $('#txtSiteID').val() + "' }",contentType: "application/json; charset=utf-8",dataType: "json",success: function(msg) {
        if (msg.d != null) {
            $('#txtSite').val(msg.d.SiteName);  // It's definitely doing this
        }
        else {
            $('#txtSite').val('');
        }
    },error: function(msg) {
    }
});

代码保存到服务器(所有连接等是正确和正常工作).这个代码是在一个ASP按钮点击事件:

sqlCommand cmd = new sqlCommand("INSERT INTO [Sites] ([SiteName]) VALUES ('" + txtSite.Text + "')",conn);
cmd.ExecuteNonQuery();

TextBox的定义如下:

<asp:TextBox ID="txtSite" runat="server" AutoComplete="off" TabIndex="4" MaxLength="50" Style="width: 230px" Enabled="false" CssClass="FormdisabledTextWithSmallHeight" />

我也试过改变我的JQuery来使用简单的Javascript,而这样做:

document.getElementById("txtSite").value = msg.d.SiteName;

仍然给我一个空值.

解决方法

您的文本框设置为Enabled =“false”,它在浏览器中显示disabled =“disabled”. Disabled form inputs are not submitted.

解决方案是使文本框启用和只读:

txtSite.Enabled = true;
txtSite.Attributes.Add("readonly","readonly"); //on prerender event or somewhere else

或使用与runat =“server”不同的元素集,如< asp:HiddenField />并使用AJAX调用更新文本框和备用元素:

success: function(msg) {
    if (msg.d != null) {
        $('#txtSite').val(msg.d.SiteName);
        $('#hiddenInput').val(msg.d.SiteName);
    } else {
            $('#txtSite').val('');
    }
}

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: &lt;span id=&quot...
jQuery 添加水印 &lt;script src=&quot;../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...