SuiteScript 密码验证允许保存不等于五个字符的记录
SuiteScript password validation allows to save a record not to equal five characters
我创建的 SuiteScript 密码验证脚本应该在密码长度不完全为 5 个字符的任何时候捕获,但是当我保存记录时,它会保存而不显示警报,"password does not match",当密码不是等于 5。我该如何解决这个问题?
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
* @NModuleScope SameAccount
*/
define(['N/currentRecord', 'N/search'],
function(currentRecord, search) {
/**
* Function to be executed after page is initialized.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @param {string} scriptContext.mode - The mode in which the record is being accessed (create, copy, or edit)
*
* @since 2015.2
*/
function pageInit(scriptContext) {
return true;
}
/**
* Function to be executed when field is changed.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @param {string} scriptContext.sublistId - Sublist name
* @param {string} scriptContext.fieldId - Field name
* @param {number} scriptContext.lineNum - Line number. Will be undefined if not a sublist or matrix field
* @param {number} scriptContext.columnNum - Line number. Will be undefined if not a matrix field
*
* @since 2015.2
*/
function fieldChanged(scriptContext) {
//alert(JSON.stringify(scriptContext.fieldId));
var objRecord = scriptContext.currentRecord;
if (scriptContext.fieldId === 'custrecord_cc_password'){
var value = objRecord.getValue({
fieldId: 'custrecord_cc_password'
});
if (value.match == 5) {
//alert("OK");
return true;
}
else {
alert("Your password should be 5 digits");
return false;
}
}
match函数(它是一个函数而不是属性)用于匹配字符串而不是字符串的长度。
要验证字符串的长度,您需要使用length 属性。
所以在你的情况下,用长度替换匹配应该可以解决问题。
if (value.length === 5) {
//alert("OK");
return true;
}
然而 fieldChanged
事件只会在用户更新密码时触发,所以为了避免这种情况你还应该实现 saveRecord
和 return false 如果您的验证没有像下面那样通过。
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
*/
define([],
function () {
function saveRecord(context) {
var currentRecord = context.currentRecord;
var password = currentRecord.getValue({ fieldId: 'custrecord_cc_password' });
if (password.length < 5) {
// show error
return false;
}
return true;
}
return { saveRecord: saveRecord };
}
);
我创建的 SuiteScript 密码验证脚本应该在密码长度不完全为 5 个字符的任何时候捕获,但是当我保存记录时,它会保存而不显示警报,"password does not match",当密码不是等于 5。我该如何解决这个问题?
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
* @NModuleScope SameAccount
*/
define(['N/currentRecord', 'N/search'],
function(currentRecord, search) {
/**
* Function to be executed after page is initialized.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @param {string} scriptContext.mode - The mode in which the record is being accessed (create, copy, or edit)
*
* @since 2015.2
*/
function pageInit(scriptContext) {
return true;
}
/**
* Function to be executed when field is changed.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @param {string} scriptContext.sublistId - Sublist name
* @param {string} scriptContext.fieldId - Field name
* @param {number} scriptContext.lineNum - Line number. Will be undefined if not a sublist or matrix field
* @param {number} scriptContext.columnNum - Line number. Will be undefined if not a matrix field
*
* @since 2015.2
*/
function fieldChanged(scriptContext) {
//alert(JSON.stringify(scriptContext.fieldId));
var objRecord = scriptContext.currentRecord;
if (scriptContext.fieldId === 'custrecord_cc_password'){
var value = objRecord.getValue({
fieldId: 'custrecord_cc_password'
});
if (value.match == 5) {
//alert("OK");
return true;
}
else {
alert("Your password should be 5 digits");
return false;
}
}
match函数(它是一个函数而不是属性)用于匹配字符串而不是字符串的长度。
要验证字符串的长度,您需要使用length 属性。
所以在你的情况下,用长度替换匹配应该可以解决问题。
if (value.length === 5) {
//alert("OK");
return true;
}
然而 fieldChanged
事件只会在用户更新密码时触发,所以为了避免这种情况你还应该实现 saveRecord
和 return false 如果您的验证没有像下面那样通过。
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
*/
define([],
function () {
function saveRecord(context) {
var currentRecord = context.currentRecord;
var password = currentRecord.getValue({ fieldId: 'custrecord_cc_password' });
if (password.length < 5) {
// show error
return false;
}
return true;
}
return { saveRecord: saveRecord };
}
);