识别可能的错误向量,javascript警报后,混合站点上的web表单似乎禁用了javascript
问题:当javascript验证器(.valid())失败时(用户没有将电子邮件放入abc@abc.com),弹出一条警报消息(警报(“…”),将css规则应用于坏字段。其他web表单按钮(签入票证)似乎停止工作。这会发生在我们的生产服务器上,但不会发生在开发/测试服务器上。这发生在我测试的3个浏览器中,IE11、chrome和FF IIS堆栈、开发/测试是虚拟机,生产是物理服务器 “签入”按钮是旧的webform部分,新的部分是knockout.js并发送到mvc控制器 我可以调查哪些可能的原因 我已经做过的事情: -安装了关于更改浏览器代理识别的KB260088,没有结果 -与test和prod上安装的软件包相比,唯一的区别是在生产上有更多的安全更新 -更改代码以删除“验证”检查。当我从javascript代码的knockoutJS部分删除此代码块的顶部$('.required')部分时,它似乎可以工作识别可能的错误向量,javascript警报后,混合站点上的web表单似乎禁用了javascript,javascript,asp.net,iis,knockout.js,webforms,Javascript,Asp.net,Iis,Knockout.js,Webforms,问题:当javascript验证器(.valid())失败时(用户没有将电子邮件放入abc@abc.com),弹出一条警报消息(警报(“…”),将css规则应用于坏字段。其他web表单按钮(签入票证)似乎停止工作。这会发生在我们的生产服务器上,但不会发生在开发/测试服务器上。这发生在我测试的3个浏览器中,IE11、chrome和FF IIS堆栈、开发/测试是虚拟机,生产是物理服务器 “签入”按钮是旧的webform部分,新的部分是knockout.js并发送到mvc控制器 我可以调查哪些可能的原
vm.save = function () {
var valid = true;
$('.required').each(function () {
if ($(this).valid() == 0) valid = false;
});
if (valid) {
var item = vm.selectedItem();
item.Company = (item.Company == null) ? "" : item.Company;
item.Phone = (item.Phone == null) ? "" : item.Phone;
item.Desc = (item.Desc == null) ? "" : item.Desc;
item.ClaimContactID = (item.ClaimContactID == 0) ? null : item.ClaimContactID;
$.ajax({
url: csMvcController('ClaimContacts', "SaveContact"),
data: { claimID: claimID, contactID: item.ClaimContactID, contactType: item.ClaimContactTypeID, fName: item.FirstName, lName: item.LastName, company: item.Company, phone: item.Phone, email: item.Email, desc: item.Desc, marketId: item.MarketId, regionSite: item.RegionSite },
dataType: "json",
type: "POST",
success: function (response) {
item.ClaimContactID = response["ContactID"];
vm.selectedItem(null);
ShowButtons(true);
}
});
} else {
alert("Required information was either missing or not in the proper format.");
}
};
我相当肯定签入按钮是web表单,因为它的格式:
<asp:Button ID="btnNewLegal" runat="server" Text="Check-In (Save Changes)" CssClass="cs-btn etc.etc..."
OnLoad="btnNewLegal_Load" OnClick="btnNewLegal_Click"></asp:Button>
提前感谢您的帮助,不幸的是,我不能很好地确定这里出了什么问题,所以我不知道用谷歌搜索是为了什么。如果我的格式不好,请告诉我,我会更新的。看起来,最初knockout.js的新内容(它是一个渲染的部分)被包装在一个表单中,而在asp.net中嵌套表单是不可能的,所以它完全去掉了标记。.valid()js(我假设)试图验证导致提交按钮不再工作的唯一表单(aspnetform)。我删除了valid()功能,手工编写了一些javascript(只是确保某些字段不是空的,但请原谅),并且能够将功能恢复到现有按钮,并允许knockout.js功能也工作 故事的寓意:观察你的表单嵌套在asp.net web表单中。不要使用.valid(),除非您确定它正在验证所需的表单