识别可能的错误向量,javascript警报后,混合网站上的网页表单似乎禁用了javascript
Identify possible bug vectors, javascript seems disabled for web forms on hybrid site after javascript alert
问题:当javascript验证器(.valid())失败时(用户没有在abc@abc.com),弹出一条警告消息(alert("…")),将css规则应用于坏字段。它看起来好像其他web表单按钮(签入票证)停止工作。这种情况发生在我们的生产服务器上,但不是开发/测试服务器。这发生在我测试的三个浏览器中,IE11,chrome,FF.
IIS堆栈、开发/测试是虚拟机,生产是物理服务器。
"签入"按钮是旧的webform部分,新的部分是knockout.js并发送到mvc控制器。
我可以调查的可能原因是什么?
我已经做过的事情:
-安装了关于更改浏览器代理识别的KB260088,没有结果
-与测试版和生产版安装的软件包相比,唯一的区别是生产版的安全更新更多。
-已更改代码以删除"验证"检查。当我从javascript代码的knockoutJS部分中删除此代码块的顶部$('.required')部分时,它似乎可以工作
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.");
}
};
我相当确定,登记按钮是网络表单,因为它的格式:
<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(),除非你确定它正在验证你想要的表单。
- 如何使用WCF服务和javascript表单post上传.doc文件
- 解析javascript表单验证器
- Javascript表单验证的缺点
- 动态Javascript表单不起作用
- 使用Ajax上传Javascript表单
- JavaScript表单验证-“;“错误”;不按需要工作
- JavaScript表单提交帮助
- HTML/Javascript表单会自动重置
- JavaScript表单提交没有't fire asp服务器端点击功能的提交按钮
- javascript表单验证-数值和密码
- 如何使用jsoup发布javascript表单
- 使用Javascript表单提交所需的HTML5
- JavaScript表单返回,但无法正常工作
- 使用HTML/Javascript表单使用ActiveXObject创建带有嵌入图像的outlook电子邮件
- 我如何使这个javascript表单验证DRYer
- Javascript表单验证-jsFiddle错误
- JavaScript 表单操作更改RC方法发布文本输入提交
- Javascript:表单验证getElementById仅返回第一个id元素
- JavaScript表单错误
- 使用 javascript 表单文本框内容