[英]SharePoint 2010/JavaScript Multiple Field Validations with Alerts
我正在使用SharePoint 2010,并且由于字段的数量和表单的长度而使用JQuery创建了多个选项卡,因此具有自定义的newform.aspx和editform.aspx。
我遇到的问题之一是当用户尝试保存表单但未在某些(或所有必填字段)中输入值时如何以视觉方式建议用户。 我正在使用SharePoint中的OOTB验证功能来指示需要解决的字段,但是由于许多必填字段现在位于不同的选项卡上,因此我想弹出一个警报窗口,指出在保存之前需要解决哪些必填字段表格。
通常,我只会处理两个或三个必填字段,但在这种情况下,我将处理八个必填字段,甚至可能更多。 过去,我会使用JavaScript if else语句执行以下操作:
function PreSaveAction() {
var tbTitle = getTagFromIdentifierAndTitle("input", "TextField", "Title");
var tbVisitor = getTagFromIdentifierAndTitle("input", "TextField", "Visitor"); {
if (tbTitle.value == "" && tbVisitor.value == "") {
alert(tbTitle.title + ' is a required field' + '\n' + tbVisitor.title + ' is a required field');
return true;
} else {
if (tbTitle.value == "") {
alert(tbTitle.title + ' is a required field');
return true;
} else {
if (tbVisitor.value == "") {
alert(tbVisitor.title + ' is a required field');
return true;
} else {
return true;
}
}
}
}
}
function getTagFromIdentifierAndTitle(tagName, identifier, title) {
var len = identifier.length;
var tags = document.getElementsByTagName(tagName);
for (var i = 0; i < tags.length; i++) {
var tempString = tags[i].id;
if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) {
return tags[i];
}
}
return null;
}
由于我要解决的必填字段太多,因此我知道,嵌套多个if语句不是最有效的方法。 利用开关盒会是走的路吗? 可能会循环吗? 我将如何去做(我不太精通JavaScript)?
我在这里先向您的帮助表示感谢!
您不需要嵌套的语句。 一次一次遍历您的字段以建立警报,然后触发它:
var alertString="";
if (tbTitle.value == "") {
alertString+= tbTitle.title + ' is a required field' + '\n';
}
if (tbVisitor.value == "") {
alertString+= tbVisitor.title + ' is a required field' + '\n';
}
...
// After going through all fields:
if (alertString) {alert(alertString);}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.