回发后Javascript动作改变
Javascript action changes after postback
本文关键字:改变 Javascript 更新时间:2023-09-26
我有一个Javascript,当选中TrainingRequired复选框以显示两个提交按钮时触发。当未选中时,将显示一个提交按钮。问题是,当我选中复选框并尝试在一个必填字段中提交没有数据的表单时,通过回发返回错误消息。复选框保持选中状态,两个按钮不再显示。如何在回发错误消息后保持两个按钮可见?
HTML标记:
<tr>
<td>
<label for="trainingRequired">
Training Required?*</label>
</td>
<td>
@Html.CheckBox("trainingRequired", Page.TrainingRequired, new { id = "chkImmediate" })
</td>
</tr>
<tr id="allowSelfTrainingBlock">
<td>
<label for="allowSelfTraining">
Allow Self Training?</label>
</td>
<td>
@Html.CheckBox("allowSelfTraining", Page.AllowSelfTraining)
</td>
</tr>
RegularButton和RequiredButton块:
<div id="RegularButton">
<input name="btn" type="submit" id="notrequired" value="Save" />
<a href="@Page.ReturnUrl" id="notrequiredurl">Cancel</a>
</div>
<div id="RequiredButton">Create New Training Document?<br />
<input name="yesbtn" type ="submit" id="required" value="Yes" />
<input name="nobtn" type="submit" id="required2" value="No & Save" />
<a href="@Page.ReturnUrl" id="requiredurl">Cancel</a>
</div>
同一页面上的Javascript:
<script type="text/javascript">
function prepareButtons() {
document.getElementById("RequiredButton").style.display = "none";
document.getElementById("RegularButton").style.display = "block";
}
//**********PostBack*************
function postBack(val) {
$('#xtravar').val(val);
$('form').submit();
}
$("#chkImmediate").change(function() {
if(this.checked) {
document.getElementById('allowSelfTrainingBlock').style.visibility = 'visible';
document.getElementById("RequiredButton").style.display = "block";
document.getElementById("RegularButton").style.display = "none";
}
else {
document.getElementById('allowSelfTrainingBlock').style.visibility = 'hidden';
document.getElementById("RequiredButton").style.display = "none";
document.getElementById("RegularButton").style.display = "block";
}
});
window.onload = function () {
prepareButtons();
}
在回发错误消息后,如果我取消选中并选中TrainingRequired复选框,我可以得到两个显示的按钮。但是我真的希望这两个按钮在回发后显示一个错误消息。谢谢。
由于页面将在回发后重新绘制,因此窗口。Onload将再次被调用。因此,您需要设置一个条件来检查是否发生了错误。因为你使用MVC,你可以在控制器中创建一个ViewBag道具,并在发生错误时设置它。如下所示
在控制器中,public ActionResult Validate()
{
if(Error)
ViewBag.isError = true;
return View();
}
在Js window.onload = function () {
var error = '@ ViewBag.isError';
if(error != 'true')
prepareButtons();
}
相关文章:
- 鼠标光标改变Javascript链接的DIV
- 如何学习和改变javascript转换规模
- 改变Javascript变量而不刷新
- 在函数内改变JavaScript数组
- JQuery UI选项卡选择的背景不改变javascript
- 如何通过ajax改变javascript中的局部变量
- 改变JavaScript对象定义样式会导致画布保持空白
- 如何调用函数一旦dom元素的样式改变Javascript/jquery
- 我如何使一个按钮改变Javascript数组位置
- 改变JavaScript中分隔符的显示属性
- 如何改变javascript函数在html中编写的参数
- 改变JavaScript中未知元素的样式
- 表单动作改变javascript用户选项选择
- 使用属性来改变javascript插件中的全局变量
- 改变javascript元素的样式
- 如何改变JavaScript's JSON中使用的数组括号
- 在父类的方法中使用子类的类变量,这样变量就可以动态地改变(javascript)
- 函数(a,b) {a = b;}不会改变javascript中a的值
- 如何改变javascript消息框编码器的条件
- 动态改变Javascript D3布局模拟