该字段的值将是在字段中定义并在输入上下文中执行的脚本的执行结果。
JavaScript 1.7用于脚本。当前版本仅支持该语言的核心方法。
一个脚本可能由多个操作组成,但只有最后一个操作的结果才会被输入到该字段中。例如:
var i = 1 + 1 //结果将是2,如果这是最后的陈述,
i + 1 //但相反,这是最后的陈述,所以结果将是3
全部标准的字段类型
[TOC]
## 脚本
脚本本身
JavaScript脚本。脚本的上下文是条目对象。返回的值是分配或表达的最后一个值。
JavaScript库
选择要加载的其他JavaScript库。目前,只有moment.min.js可用。
实时执行脚本
否(默认)
脚本只能在编辑时运行。性能将得到提升。
是
脚本将在编辑或显示时运行。
## 显示选项
显示在列表中
选择当前字段的以下角色:
* 作为一个常规字段
* 作为条目名称
* 作为条目说明
* 作为入境身份
字段名称
显示卡条目中的字段名称(默认为“开”)。 这意味着字段名称将会或不会显示在条目查看卡或条目编辑卡上。
字体
选择是:
* 家庭:规则,轻,浓缩,薄,中等。 默认情况下,Regular。
* 样式:正常,粗体,斜体,粗斜体。 默认情况下,正常。
* 大小:默认情况下,18.直接输入更改。
* 颜色:默认情况下,白色。 20种颜色的调色板,由连续可变颜色选择器支持。
依赖关系
能够在具有限定类型的字段上添加一个或多个可见性依赖关系。
## JavaScript字段不用于绘制
与计算字段不同,JavaScript字段不适合在图表中使用。
## 条目的字段
函数[***字段(“字段名称”)***](http://www.jsaaa.cc/app/mementodatabase/index.php?title=%E8%A7%A6%E5%8F%91%E5%99%A8%EF%BC%83%E5%AD%97%E6%AE%B5%EF%BC%88%E5%90%8D%E7%A7%B0%EF%BC%89&action=edit&redlink=1 "触发器#字段(名称)(页面不存在)")用于访问输入字段的值。 函数返回的JavaScript对象的类型取决于字段类型。
表中显示了Memento字段类型和JavaScript对象的兼容性:
字段类型返回值
| 字段类型 | JavaScript对象 | 例子 |
| 文本,超链接,密码,电话,电子邮件,计算(字符串结果),单选按钮,单选列表 | [**字符串**](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | “ABC” |
| 整数,实数,评级,货币,计算(数字结果) | [**号码**](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number) | 42,42.1 |
| 日期,日期时间,时间 | [**日期**](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date) |
| 复选框(布尔) | [**布尔'**](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean) | 真假 |
| 复选框,多选列表 | [[1]](https://developer.mozilla.org/docs/Web/JavaScript/Reference/)的[**数组**](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array) 全局对象/字符串**字符串**] | [“衬衫”,“裤子”,“袜子”] |
| 图片 | [[2]](https://developer.mozilla.org/docs/Web/JavaScript/Reference/)的[**数组**](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array) 全局对象/字符串**字符串**] | [“file:///storage/emulated/0/DCIM/image01.png”,“file:///storage/emulated/0/DCIM/image02.png”] |
| 链接到条目 | [**条目**](http://www.jsaaa.cc/app/mementodatabase/index.php?title=%E8%A7%A6%E5%8F%91%E5%99%A8%EF%BC%83%E6%9D%A1%E7%9B%AE%E5%AF%B9%E8%B1%A1&action=edit&redlink=1 "触发器#条目对象(页面不存在)")的[**数组**](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)] >每个数组元素都有一个方法“field()”,用于访问链接库条目的字段值。例如:
字段( “localField”)[I]的字段( “remoteField”) | [e1,e2,e3] |
## 脚本执行时间[[编辑](http://www.jsaaa.cc/app/mementodatabase/index.php?title=JavaScript%E5%AD%97%E6%AE%B5&action=edit§ion=5 "编辑小节:脚本执行时间")]
脚本可以在创建或更改条目时以及显示时执行。
脚本执行时间由字段编辑屏幕上的切换按钮*执行脚本实时*设置。 如果脚本包含取决于当前时间的函数,则启用此选项是合理的。 在大量条目的情况下进行在线执行会显着增加打开库所需的时间。
## 使用日期的函数[[编辑](http://www.jsaaa.cc/app/mementodatabase/index.php?title=JavaScript%E5%AD%97%E6%AE%B5&action=edit§ion=6 "编辑小节:使用日期的函数")]
您可以启用集成库[**moment.js**](http://momentjs.com/)来处理日期和时间。点击***JavaScript库***,然后选择'***moment.min.js***。
一些例子。如果条目包含值为2016年3月18日14:55的字段Date
**日期格式示例**
~~~
moment(field('Date')).format('MMMMM Do YYYYY') // 2016年3月18日
moment(field('Date')).format('dddd') //星期五
moment(field('Date')).format('dddd [Escaped] YYYY') //星期五逃离2016
moment(field('Date')).format('HH:mm') // 14:55
~~~
**相对时间示例**
~~~
moment(field('Date')).fromNow() // 11分钟前
moment(field('Date')).startOf('day').fromNow() // 15小时前
~~~
**日历时间示例**
~~~
moment(field('Date')).calendar() // Today at 2:55 PM //今天2:55 PM
moment(field('Date')).add(1 , 'days').calendar() // Tomorrow at 2:55 PM//明天2:55 PM
~~~
有关**[[3]](http://momentjs.com/)**上的库功能的更多信息
## 例子[[编辑](http://www.jsaaa.cc/app/mementodatabase/index.php?title=JavaScript%E5%AD%97%E6%AE%B5&action=edit§ion=7 "编辑小节:例子")]
#### 例子:产品[[编辑](http://www.jsaaa.cc/app/mementodatabase/index.php?title=JavaScript%E5%AD%97%E6%AE%B5&action=edit§ion=8 "编辑小节:例子:产品")]
该库包含字段价格"Price"和计数。 JavaScript字段**总价**"Count"可按如下方式计算:
~~~
field('Price')*field('Count');
~~~
#### 例子:百分比[[编辑](http://www.jsaaa.cc/app/mementodatabase/index.php?title=JavaScript%E5%AD%97%E6%AE%B5&action=edit§ion=9 "编辑小节:例子:百分比")]
该库包含“计数”和“总计”字段。 JavaScript字段**百分比**可按如下方式计算:
~~~
var total = field('Total');
if (total > 0)
field('Count')*100/total + ' %';
else
'None';
~~~
#### 例子:日子[[编辑](http://www.jsaaa.cc/app/mementodatabase/index.php?title=JavaScript%E5%AD%97%E6%AE%B5&action=edit§ion=10 "编辑小节:例子:日子")]
该库包含DateTime(或Time)字段开始和结束。 JavaScript字段**天**可以计算如下:
~~~
(field('End'))diff(field('Start'),'days');
~~~
#### 例子:生日[[编辑](http://www.jsaaa.cc/app/mementodatabase/index.php?title=JavaScript%E5%AD%97%E6%AE%B5&action=edit§ion=11 "编辑小节:例子:生日")]
我们有一个生日场。如果一个人年龄小于18岁,我们想要显示字符串“青春”,否则字符串“成人”。
~~~
var years = moment().diff(field('Birthday') , 'years' )
if (years 18)
'Youth';
else
'Adult';
~~~
### 链接条目计算示例[[编辑](http://www.jsaaa.cc/app/mementodatabase/index.php?title=JavaScript%E5%AD%97%E6%AE%B5&action=edit§ion=12 "编辑小节:链接条目计算示例")]
如果您有多对多的“链接到条目”字段—将当前条目链接到另一个库中的零个或多个条目—并且如果在其他库中有一个数量字段,则可能需要在这些条目上对该字段执行计算,与Memento聚合函数类似。
#### 示例:链接量的总和[[编辑](http://www.jsaaa.cc/app/mementodatabase/index.php?title=JavaScript%E5%AD%97%E6%AE%B5&action=edit§ion=13 "编辑小节:示例:链接量的总和")]
~~~
var amountField = "Amount"; //更改金额到您的金额字段名称
var linkedEntries = field("Them"); //将它们更改为链接字段名称
var numLE = linkedEntries.length; //链接条目的数量
//循环链接条目,创建总和
for (var lex = 0, result = 0; lex numLE; lex++)
result += linkedEntries[lex].field(amountField);
result; 结果; //结果是SUM
~~~
#### 示例:链接量的平均值[[编辑](http://www.jsaaa.cc/app/mementodatabase/index.php?title=JavaScript%E5%AD%97%E6%AE%B5&action=edit§ion=14 "编辑小节:示例:链接量的平均值")]
~~~
var amountField =“Amount”; //更改金额到您的金额字段名称
var linkedEntries = field(“Them”); //将它们更改为链接字段名称
var numLE = linkedEntries.length; //链接条目的数量
//循环链接条目,创建总和
for(var lex = 0,result = 0; lex <numLE; lex ++)
result + = linkedEntries [lex] .field(amountField);
if (numLE != 0)
result / numLE; //结果是AVERAGE
~~~
#### 示例:链接数量最少[[编辑](http://www.jsaaa.cc/app/mementodatabase/index.php?title=JavaScript%E5%AD%97%E6%AE%B5&action=edit§ion=15 "编辑小节:示例:链接数量最少")]
~~~
var amountField =“Amount”; //更改金额到您的金额字段名称
var linkedEntries = field(“Them”); //将它们更改为链接字段名称
var numLE = linkedEntries.length; //链接条目的数量
var temp;
//循环链接的条目,找到最小值
for(var lex = 0,result = 0; lex <numLE; lex ++){
temp = linkedEntries [lex] .field(amountField);
if (temp < result)
result = temp;
}
result; //结果是MINIMUM
~~~
#### 示例:链接量的最大值[[编辑](http://www.jsaaa.cc/app/mementodatabase/index.php?title=JavaScript%E5%AD%97%E6%AE%B5&action=edit§ion=16 "编辑小节:示例:链接量的最大值")]
~~~
var amountField =“Amount”; //更改金额到您的金额字段名称
var linkedEntries = field(“Them”); //将它们更改为链接字段名称
var numLE = linkedEntries.length; //链接条目的数量
var temp;
//循环链接的条目,找到最大值
for(var lex = 0,result = 0; lex <numLE; lex ++){
temp = linkedEntries [lex] .field(amountField);
if (temp < result)
result = temp;
}
结果; //结果是MAXIMUM
~~~
#### 示例:包含项目的订单[[编辑](http://www.jsaaa.cc/app/mementodatabase/index.php?title=JavaScript%E5%AD%97%E6%AE%B5&action=edit§ion=17 "编辑小节:示例:包含项目的订单")]
库订单包含订单,库项目包含项目。订单包含项目到库项目的链接。项目包含字段数量和价格。 要计算订单的成本,可以如下计算JavaScript字段**Cost**:
~~~
var items = field('Items'); //将项目更改为链接字段名称
var cost = 0;
for (var i in items)
cost += items[i].field('Quantity') * items[i].field('Price');
cost; //结果是COMPUTED COST
~~~
#### 示例:控制输入颜色[[编辑](http://www.jsaaa.cc/app/mementodatabase/index.php?title=JavaScript%E5%AD%97%E6%AE%B5&action=edit§ion=18 "编辑小节:示例:控制输入颜色")]
“条目列表”屏幕中条目的颜色可以使用JavaScript字段进行控制。 JavaScript字段仅返回格式为“#RRGGBB”的颜色字符串,其中RR是颜色的红色分量的十六进制(十六进制)值,GG是绿色分量的十六进制值,BB是蓝色的十六进制值零件。用户必须通过编辑库并在MAIN选项卡上为Entry颜色参数选择字段来识别JavaScript字段。
您可以使用不同颜色的许多条目指示区域,类别,范围等内容。
例如,假设您有一个数字字段,并且想要如果该字段为负,则为红色;如果为正,则为绿色。以下是你如何做到这一点...
创建一个称为“入口颜色”的JavaScript字段。也许你有一个名为“金额”的货币字段。您可以将脚本设置为...
~~~
var amt = field(“Amount”);
if(amt <0)“#FF0000”;
else if(amt> 0)“#00FF00”;
~~~
现在,转到“库编辑”屏幕的MAIN选项卡。点击输入颜色,然后选择新的JavaScript字段,输入的颜色。
因此,如果您的金额字段为负值,则会在条目列表中显示左侧的红色条。 如果是肯定的,它会在左边显示一个绿色条。 否则,它是零,在这种情况下,它的左边没有酒吧(barcolor由你使用的主题决定 - 如果你使用灯光主题则为白色,使用黑色主题则为黑色)。
## 参考[[编辑](http://www.jsaaa.cc/app/mementodatabase/index.php?title=JavaScript%E5%AD%97%E6%AE%B5&action=edit§ion=19 "编辑小节:参考")]
你可以找到这个语言的完整描述[**here**](https://developer.mozilla.org/docs/Web/JavaScript)。 该实施基于[**Rhino图书馆**](https://www.mozilla.org/rhino/)。
## JavaScript链接[[编辑](http://www.jsaaa.cc/app/mementodatabase/index.php?title=JavaScript%E5%AD%97%E6%AE%B5&action=edit§ion=20 "编辑小节:JavaScript链接")]
| **W3Schools** |
| [**JavaScript教程**](http://www.w3schools.com/js/) | 一个令人愉快的,相当完整的,有用的JavaScript教程
最好在风景中的计算机或平板电脑上。在纵向手机或平板电脑上,滚动至底部进行导航。 |
| **Mozilla开发者网络** |
| [**JavaScript指南**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide) | 向您展示如何使用JavaScript,概述语言,并介绍其功能和特性 |
| [**JavaScript参考**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference) | 整个JavaScript语言详细描述 |
| [**JavaScript简介**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Introduction) | 介绍JavaScript并讨论其一些基本概念 |
| [**JavaScript教程**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript) | 重新介绍。 JavaScript通常被认为是一种玩具,但在其简单性之下,强大的语言特性正在等待着。 |
| [**JavaScript 1.7**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7) | Memento目前基于的JavaScript版本 |
| [**关于JavaScript**](https://developer.mozilla.org/en-US/docs/Web/JavaScript) | 在学习JavaScript的过程中跳出一个关键点 |
- 前言简介
- 技巧经验
- 实现自动序列号
- 使用工具来转换成csv文件
- 如何制作和导出模板组合
- 实例资源
- js字段实例
- 根据身份证取出生日期、性别、年龄
- 自动标记状态,到期自动标记过期,可屏蔽过期以及聚合计算显示
- 根据出生日期计算年龄
- 人民币小写数字金额转大写
- 倒计时天数,实现倒计时纪念日等功能显示
- 取指定时间是周几的4种方法
- 自动填写年份、月份
- 只显示计算公式而不显示计算结果的办法
- 根据多个已选的员工人数,计算总工资
- 计算显示每年、每月的总工资实例
- 实现完全性的跨库计算自定义公式
- 触发器实例
- 新建或编辑条目后,更改条目内容
- 计算字段范例
- 计算星期几实例(3.8.5版本及以上)
- 计算星期几实例(3.8.5版本以下)
- 计算第几周
- 实现单条数据的百分比形式(并且控制小数点为2位)
- 自动填充实例
- js套用方法外壳,实现网站数据源自动录入内容
- js代码实例
- 动作实例
- 实例将网络数据写入库中
- js函数运用实例
- 创建一个新的条目记录
- 查询库内容
- 数据源实例
- Js套用方法外壳,实现网站数据源自动录入内容
- 其它实例
- 字符串值的控制
- 资料知识
- 表格与ME库关系
- ME库电子日历使用一帖通
- ME库CSV应用一帖通
- 新手入门
- 新手入门教程
- 常见问题集合
- 官方资料(中文版)
- 计算字段
- JavaScript字段
- 链接到条目字段
- 脚本
- 纪念品JavaScript库
- 动作
- 数据源
- 触发器
- 触发器示例
- 旧档
- 计算字段命令,FUNCTION功能
- JavaScript的字段
- javascript常用函数及功能
- 前言介绍
- 经验技巧
- 官方资料(英文版)
- Memento Database
- Glossary
- Memento Wiki
- Useful links
- Releases
- User Interface
- Tutorial:Simple To Do List
- Tutorial:Simple To Do List Enhancements
- Libraries & templates
- Library
- Library Template
- Library Edit screen
- Library Groups
- How:Add a Library
- Libraries List screen
- Fields, pages, & subheaders
- Overviews
- Field
- Field Edit card
- Field Role
- Field Type
- Page
- Specs
- Techniques, Tips, How
- Tips:Using JavaScript in Memento
- How:Field Dependencies
- 关于附件
- 交流互助
- 贡献人员