在Javascript更改文本后获取TextBox文本

时间:2014-10-29 21:57:43

标签: javascript c# html asp.net

我在类似于this one的ASP.NET页面中有一个“ColorPicker”功能,除了右边的阴影是动态填充的,具体取决于是否已经使用了阴影。

我有一个TextBox,显示所选颜色/阴影的十六进制值(#RRGGBB):

<asp:TextBox runat="server" ID="TbxColorhex" Text="#FF0000" Enabled="false" />

呈现为:

<input name="TbxColorhex" type="text" value="#FF0000" id="TbxColorhex"></input>

当单击一个阴影(表格单元格)时,我使用JavaScript来更改TextBox中的文本(十六进制值)。

function selectShade(shadehex) {
    if (shadehex) {
        document.getElementById('divpreview').style.background = shadehex;
        document.getElementById('<%= TbxColorhex.ClientID %>').value = shadehex;
    }
}

我有一个确认所选颜色的按钮:

<asp:Button ID="BtnSelectColor" runat="server" Text="Select Color" OnClick="BtnSelectColor_Click" style="margin: 0 auto" />

单击时触发此方法(在后面的代码上):

protected void BtnSelectColor_Click(object sender, EventArgs e)
{
    if (!String.IsNullOrEmpty(TbxColorhex.Text))
    {
        Response.Redirect(Page.ResolveClientUrl("~/Something/AddProject.aspx?projcolor=" + TbxColorhex.Text));
    }
}

问题

当单击一个阴影时,JavaScript会相应地更改TextBox中的文本(您可以看到TextBox中的文本发生了变化。但是,如果我使用调试器,我会注意到{{1}的值没有变化value标记中的属性。因此,当我单击按钮时,它不会获得TextBox显示的文本。

2 个答案:

答案 0 :(得分:1)

问题出在Enabled="false"。禁用输入的值不包含在浏览器提交给服务器的POST数据中。您可以尝试将TextBox设为只读。

如果您必须将其禁用,请在表单中添加HiddenField控件,并在javascript中设置其值与设置TextBox的方式相同。然后,在服务器端代码中将值从HiddenField传输到TextBox

答案 1 :(得分:0)

不要担心输入标记的value属性。担心通过POST发送到服务器的值。

如果BtnSelectColor_中的值不正确,可能是因为你在页面加载的某处设置了值并覆盖了回发值。