通过JQuery设置文本框值

Nei*_*ght 12 asp.net jquery

TextBox通过ajax帖子设置控件值.

$('#txtSite').val(msg.d.SiteName);
Run Code Online (Sandbox Code Playgroud)

这是有效的,并且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) {
    }
});
Run Code Online (Sandbox Code Playgroud)

保存到服务器的代码(所有连接等都正确且有效).此代码位于ASP按钮单击事件中:

SqlCommand cmd = new SqlCommand("INSERT INTO [Sites] ([SiteName]) VALUES ('" + txtSite.Text + "')", conn);
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

TextBox定义如下所示:

<asp:TextBox ID="txtSite" runat="server" AutoComplete="off" TabIndex="4" MaxLength="50" Style="width: 230px" Enabled="false" CssClass="FormDisabledTextWithSmallHeight" />
Run Code Online (Sandbox Code Playgroud)

我也试过改变我的JQuery来使用普通的Javascript而不是这样做:

document.getElementById("txtSite").value = msg.d.SiteName;
Run Code Online (Sandbox Code Playgroud)

仍然给我一个空值.

pet*_*ete 19

您将文本框设置为Enabled="false"在浏览器中使用a进行渲染disabled="disabled".禁用表单输入未提交.

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

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

或者使用不同的元素集runat="server",比如a <asp:HiddenField />和用AJAX调用更新文本框和备用元素:

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

  • 我确实尝试将字段设置为“ ReadOnly”,但仍然失败。昨天早上,我实施了“ HiddenField”解决方案作为解决方法。 (2认同)