- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个脚本,其中 ajax 调用如下所示:
(function () {
var setup, validation;
var errorMessage = '';
var errorClass = '';
var element = '';
var errorElement = '';
var allOk = true;
var testTelefon = /^[0-9\-+]{2,40}$/;
var testEpostAdress = /^(?!.{65})\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
(function () {
setup = {
init: function () {
this.initSendForm();
},
initSendForm: function () {
var self = this;
$('#helpContactForm').submit(function (event) {
if (allOk) {
var formData = self.getFormData();
var url = $(this).attr("action");
$.ajax({
cache: false,
type: "POST",
url: url,
data: formData,
success: function (data) {
if (data.Success) {
self.resetFormData();
self.showModal(data);
}
},
error: function (data) {
self.showModal(data);
}
});
}
self.hideModal();
event.preventDefault();
});
},
getFormData: function () {
var data = {
'Namn': $('#namn').val(),
'Email': $('#epost').val(),
'Telefon': $('#telefon').val(),
'Fraga': $('#fraga').val()
};
return data;
},
resetFormData: function () {
$('#namn').val(''),
$('#epost').val(''),
$('#telefon').val(''),
$('#fraga').val('')
return true;
},
showModal: function (data) {
$('#messageModalTitle').text(data.Caption);
$("#messageModalBodyText").text(data.Message);
$('#messageModal').modal('show');
return true;
},
hideModal: function () {
setTimeout(function () {
$('#messageModal').modal('hide');
}, 5000);
return true;
}
};
})();
(function () {
validation = {
valideraFormularet: function (errorMsgs) {
var errorMsgsArr = errorMsgs.split(","); //0=> Namn validerings meddel., 1=> Epost, 2=> Telefon, 3=> Fråga
var epost = document.getElementById("epost");
var telefon = document.getElementById("telefon");
this.valideraNamnet(errorMsgsArr[0]);
this.valideraEpostTelefon((errorMsgsArr[1] + ', ' + errorMsgsArr[2]), epost);
this.valideraEpostTelefon((errorMsgsArr[1] + ', ' + errorMsgsArr[2]), telefon);
this.valideraFraga(errorMsgsArr[3]);
return false;
},
valideraNamnet: function (errorMsg) {
var namn = document.getElementById("namn");
var namnError = document.getElementById("namnError");
if (namn.value == "") {
this.setErrorMsgAndClass(namn, namnError, "input-validation-error", errorMsg);
}
else {
this.setErrorMsgAndClass(namn, namnError);
return true;
}
allOk = false;
return false;
},
valideraEpostTelefon: function (errorMsg, ele) {
var result = errorMsg.split(","); //0=> När båda saknas, 1=> När epost saknas, 2=> När telefon saknas
var srcElement = document.getElementById(ele.id);
var epost = document.getElementById("epost");
var epostError = document.getElementById("epostError");
var telefon = document.getElementById("telefon");
var telefonError = document.getElementById("telefonError");
var errorElement = srcElement === epost ? epostError : telefonError;
var validEpost = testEpostAdress.test(epost.value);
var validTelefon = testTelefon.test(telefon.value);
if (epost.value == "" && telefon.value == "") {
this.setErrorMsgAndClass(srcElement, errorElement, "input-validation-error", result[0]);
}
else if (!validEpost && !validTelefon) {
this.setErrorMsgAndClass(srcElement, errorElement, "input-validation-error", srcElement === epost ? result[1] : result[2]);
}
else {
this.setErrorMsgAndClass(srcElement, errorElement);
return true;
}
allOk = false;
return false;
},
valideraTelefon: function (errorMsg) {
var result = errorMsg.split(",");
var telefon = document.getElementById("telefon");
var epost = document.getElementById("epost");
var telefonError = document.getElementById("telefonError");
var validTelefon = testTelefon.test(telefon.value);
if (telefon.value == "" && epost.value == "") {
this.setErrorMsgAndClass(telefon, telefonError, "input-validation-error", result[0]);
}
else if (validTelefon == false) {
this.setErrorMsgAndClass(telefon, telefonError, "input-validation-error", result[1]);
}
else {
this.setErrorMsgAndClass(telefon, telefonError);
return true;
}
allOk = false;
return false;
},
valideraFraga: function (errorMsg) {
var fraga = document.getElementById("fraga");
var fragaError = document.getElementById("fragaError");
if (fraga.value == "") {
fraga.style.borderColor = "#ffb6b6";
this.setErrorMsgAndClass(fraga, fragaError, "input-validation-error", errorMsg);
}
else {
fraga.style.borderColor = "#dddddd";
this.setErrorMsgAndClass(fraga, fragaError);
return true;
}
allOk = false;
return false;
},
setErrorMsgAndClass: function (el, errorEl, nameOfClass = '', errorMsg = '') {
element = el;
errorElement = errorEl;
errorClass = nameOfClass;
errorMessage = errorMsg;
this.setErrorMsgAndClassOnElements();
return false;
},
setErrorMsgAndClassOnElements: function () {
element.className = errorClass;
errorElement.textContent = errorMessage;
this.toggleSubmitBtn();
return false;
},
toggleSubmitBtn: function () {
allOk = errorClass == '' && $('.input-validation-error').length == 0 ? true : false;
if (!allOk)
document.getElementById("btnHelpFormSubmit").disabled = true;
else
document.getElementById("btnHelpFormSubmit").disabled = false;
}
};
})();
})();
这基本上是一个简单的“联系我们”表单。因此用户填写联系信息和问题。然后,表单被提交到服务器(一个 asp.net mvc Controller ),响应(json)以感谢消息的形式显示在 Bootstrap 模式中,并在 5 秒后自动消失。
现在,除了 IE 11 及更低版本之外,这在所有浏览器中都可以正常工作(是的,我们必须支持这些浏览器,因为我们在某些使用这些浏览器的国家/地区有用户)。
问题是,当在 IE 中提交表单时,它不会显示模式,而是要求用户下载(IE 窗口底部的小保存或打开消息)json 内容。IE 控制台中唯一的错误是“)预期”。虽然我已经检查了代码很多次并且其中没有缺少“)”(或者我忽略了?)。
这些可能是相互连接的问题,或者可能是 ajax 请求 block 中缺少某些内容,因此 IE 不会显示模式,而是向用户提供下载 json 内容的选项,并且此括号错误与其他内容相关。
需要帮助!
编辑:现在这是完整的代码。一些代码位于另一个 JS 文件中,我已将它们合并在一起,因此它看起来与 Chrome 的源代码 View 中的相同。
最佳答案
setErrorMsgAndClass
的函数定义有一些默认参数值。
... function (el, errorEl, nameOfClass = '', errorMsg = '') { ... }
不幸的是,没有任何版本的 Internet Explorer 可以处理这样的默认参数,请参阅 Default Parameters Browser Compatibility Table .
您可以使用“旧式”默认参数,类似于:
var x = function (el, errorEl, nameOfClass, errorMsg) {
nameOfClass = (typeOf nameOfClass != 'undefined') ? nameOfClass : 'Default Class Name';
errorMsg = (typeOf errorMsg != 'undefined') ? errorMsg : 'Default Error Message';
// code
}
x(a,b,c,d); // works
x(a,b); // works using the defaults instead of c/d
还有其他处理默认参数的方法示例,这样旧版浏览器在上面链接的 MDN 页面的其余部分上就不会出现问题。
关于IE 11 及以下版本中的 JavaScript 错误 ") expected "+ AJAX 无法在 IE 11 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53155834/
我通过 spring ioc 编写了一些 Rest 应用程序。但我无法解决这个问题。这是我的异常(exception): org.springframework.beans.factory.BeanC
我对 TestNG、Spring 框架等完全陌生,我正在尝试使用注释 @Value通过 @Configuration 访问配置文件注释。 我在这里想要实现的目标是让控制台从配置文件中写出“hi”,通过
为此工作了几个小时。我完全被难住了。 这是 CS113 的实验室。 如果用户在程序(二进制计算器)结束时选择继续,我们需要使用 goto 语句来到达程序的顶部。 但是,我们还需要释放所有分配的内存。
我正在尝试使用 ffmpeg 库构建一个小的 C 程序。但是我什至无法使用 avformat_open_input() 打开音频文件设置检查错误代码的函数后,我得到以下输出: Error code:
使用 Spring Initializer 创建一个简单的 Spring boot。我只在可用选项下选择 DevTools。 创建项目后,无需对其进行任何更改,即可正常运行程序。 现在,当我尝试在项目
所以我只是在 Mac OS X 中通过 brew 安装了 qt。但是它无法链接它。当我尝试运行 brew link qt 或 brew link --overwrite qt 我得到以下信息: ton
我在提交和 pull 时遇到了问题:在提交的 IDE 中,我看到: warning not all local changes may be shown due to an error: unable
我跑 man gcc | grep "-L" 我明白了 Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more inf
我有一段代码,旨在接收任何 URL 并将其从网络上撕下来。到目前为止,它运行良好,直到有人给了它这个 URL: http://www.aspensurgical.com/static/images/a
在过去的 5 个小时里,我一直在尝试在我的服务器上设置 WireGuard,但在完成所有设置后,我无法 ping IP 或解析域。 下面是服务器配置 [Interface] Address = 10.
我正在尝试在 GitLab 中 fork 我的一个私有(private)项目,但是当我按下 fork 按钮时,我会收到以下信息: No available namespaces to fork the
我这里遇到了一些问题。我是 node.js 和 Rest API 的新手,但我正在尝试自学。我制作了 REST API,使用 MongoDB 与我的数据库进行通信,我使用 Postman 来测试我的路
下面的代码在控制台中给出以下消息: Uncaught DOMException: Failed to execute 'appendChild' on 'Node': The new child el
我正在尝试调用一个新端点来显示数据,我意识到在上一组有效的数据中,它在数据周围用一对额外的“[]”括号进行控制台,我认为这就是问题是,而新端点不会以我使用数据的方式产生它! 这是 NgFor 失败的原
我正在尝试将我的 Symfony2 应用程序部署到我的 Azure Web 应用程序,但遇到了一些麻烦。 推送到远程时,我在终端中收到以下消息 remote: Updating branch 'mas
Minikube已启动并正在运行,没有任何错误,但是我无法 curl IP。我在这里遵循:https://docs.traefik.io/user-guide/kubernetes/,似乎没有提到关闭
每当我尝试docker组成任何项目时,都会出现以下错误。 我尝试过有和没有sudo 我在这台机器上只有这个问题。我可以在Mac和Amazon WorkSpace上运行相同的容器。 (myslabs)
我正在尝试 pip install stanza 并收到此消息: ERROR: No matching distribution found for torch>=1.3.0 (from stanza
DNS 解析看起来不错,但我无法 ping 我的服务。可能是什么原因? 来自集群中的另一个 Pod: $ ping backend PING backend.default.svc.cluster.l
我正在使用Hibernate 4 + Spring MVC 4当我开始 Apache Tomcat Server 8我收到此错误: Error creating bean with name 'wel
我是一名优秀的程序员,十分优秀!