我有一个带食物桌的页面,当我想添加新食物时,我有一个"插入食物"的按钮,当点击时显示带有标签的小div,文本框和插入的东西,它改变了它的文字"插入"到"取消"。这是代码:
protected void insertFoodBTN_Click(object sender, EventArgs e)
{
if (insertFoodBTN.Text == "Insert Food")
{
nameF.Visible = true;
nameFTB.Visible = true;
priceF.Visible = true;
priceFTB.Visible = true;
... etc ...
addFBTN.Visible = true;
insertDiv.Style["display"] = "block";
insertFoodBTN.Text = "Cancel Insertion";
}
else
{
nameF.Visible = false;
nameFTB.Visible = false;
priceF.Visible = false;
priceFTB.Visible = false;
... etc ...
addFBTN.Visible = false;
insertDiv.Style["display"] = "none";
insertFoodBTN.Text = "Insert Food";
}
}
工作正常 我的问题是,当我想通过点击相同的"插入食物"按钮它甚至不输入该insertButton_Clicked的功能。 注意 - 它的文本是"取消插入",但ID没有被更改,所以它基本上应该进入。
在查询之后 - 它变成了两个第一个文本框导致这一点,因为当我删除它们时,插入div再次消失,就像之前一样。 我不知道为什么,因为我之后还有另一个文本框,它不会阻止隐藏div。
我不知道为什么会这样。谢谢你的帮助。
[点击"插入食物"第一次,div打开] [1]
答案 0 :(得分:1)
不使用div尝试使用Panel包围表单。 而不是一个按钮使用两个。
protected void insertFoodBTN_Click(object sender, EventArgs e)
{
pnInsert.Visible = true;
cancelFoodBTN.Visible = true;
insertFoodBTN.Visble = false;
}
protected void cancelFoodBTN_Click(object sender, EventArgs e)
{
pnInsert.Visible = false;
cancelFoodBTN.Visible = false;
insertFoodBTN.Visble = true;
}
答案 1 :(得分:0)
由于您在评论中说明验证程序阻止了表单的提交,因此当其角色发生变化时,解决方案是enable/disable validation for the button:
protected void insertFoodBTN_Click(object sender, EventArgs e)
{
if (insertFoodBTN.Text == "Insert Food")
{
...
insertFoodBTN.Text = "Cancel Insertion";
insertFootBTN.CausesValidation = false; // Cancel button does not require valid data
}
else
{
...
insertFoodBTN.Text = "Insert Food";
insertFootBTN.CausesValidation = true;
}
}
注意:由于按钮具有两个不同的功能,我建议改为创建两个按钮,其中只有一个在给定时间可见。这样,您不必每次都“重新配置”按钮(这也会导致您复制诸如ASP.NET标记和代码中的按钮文本之类的内容,违反DRY principle)