我在 ASP.NET 页面中有一个类似于 this one 的“ColorPicker”功能,不同之处在于右侧的阴影是根据阴影是否已被使用而动态填充的。
我有一个文本框,显示所选颜色/阴影的十六进制值(#RRGGBB):
<asp:TextBox runat="server" ID="TbxColorhex" Text="#FF0000" Enabled="false" />
渲染为:
<input name="TbxColorhex" type="text" value="#FF0000" id="TbxColorhex"></input>
当单击阴影(表格单元格)时,我使用 JavaScript 更改文本框中的文本(十六进制值)。
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 中的文本发生变化。但是,如果我使用调试器,我会注意到 的值没有变化
属性。因此,当我单击按钮时,它不会获取 TextBox 显示的文本。input
标记中的 value
最佳答案
问题出在 Enabled="false"
中。禁用输入的值不包含在浏览器向服务器提交的 POST 数据中。您可以尝试将 TextBox
设置为只读。
如果您必须将其保持禁用状态,请向表单添加一个 HiddenField
控件,并以与 TextBox
设置相同的方式在 javascript 中设置其值。然后,在服务器端代码中将值从 HiddenField
传输到 TextBox
。
关于javascript - Javascript 更改文本后获取 TextBox 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26641369/