𝕷𝖎𝖑𝖏𝖆𝖈𝖐 发表于 2023-9-27 17:09:21

Discuz common.js 内置(AJAX)函数帮助文档

showMenu() 显示弹出菜单

function showMenu(v)
参数 v 格式:{'key1':'value1','key2':'value2','key3':'value3'}
目前,数组 v 支持传递的 key 有:
key    默认值    含义    可选值及解释   
ctrlid    (必填)    控制菜单的 id   
showid    ctrlid    弹出菜单的 id   
menuid    showid + '_menu'    显示菜单的 id   
evt    'mouseover'    响应函数的事件    click: ctrlObj 的 onclick 触发
mouseover: ctrlObj 的 onmouseover 触发   

pos    '43'    菜单位置    详见 setMenuPosition() 中对 pos 的解释   
layer    1    菜单层级    大于 0 的任意整数   
duration    2    菜单显示方式    3:菜单一直显示,除非执行 hideMenu(),或者页面 unload
2:鼠标移开 ctrlObj 及 menuObj 即开始计时 timeout 毫秒后消失
1:鼠标移开 ctrlObj 即开始计时 timeout 毫秒后消失
0:菜单显示即开始计时 timeout 毫秒后消失

timeout    250    菜单持续时间    单位:毫秒   
mtype    'menu'    菜单类型    menu:普通菜单
win:浮窗
prompt:提示信息
dialog:对话框

maxh    600    菜单最大高度,实际高度超过 maxh 时菜单将出现垂直滚动条   
cache    1    是否缓存菜单    1:是0:否

drag    拖拽菜单对象的 id,如果希望整个菜单都可以拖拽 请设置 drag 等于1   
fade    0    淡入淡出效果    1:是0:否

cover    0    是否显示一个遮罩覆盖整个页面    1:是0:否

zindex    JSMENU['zIndex']['menu']    菜单层叠顺序   
ctrlclass    控制对象在菜单弹出后的 class 值,duration = 2 时有效   
showDialog() 显示对话框

function showDialog(msg, mode, t, func, cover, funccancel, leftmsg, confirmtxt, canceltxt, closetime, locationtime)
key    默认值    含义    可选值及解释   
msg    (必填)    提示信息内容   
mode    'alert'    对话框模式    alert/right:有确定按钮
confirm:有确定和取消按钮
notice:有确定按钮
info:没有按钮

t    '提示信息'    对话框标题   
func    点"确定"执行的函数   
cover    1 (mode = 'info' 时为 0)    是否显示一个遮罩覆盖整个页面    1:是0:否

funccancel    点"取消"执行的函数   
leftmsg    底部左侧信息   
confirmtxt    '确定'    确定按钮的文字   
canceltxt    '取消'    取消按钮的文字   
closetime    自动关闭的时间,单位"秒"
leftmsg 强制更改为"n 秒后窗口关闭"

locationtime    自动跳转时间,单位"秒"
leftmsg 强制更改为"n 秒后页面跳转"


showWindow() AJAX弹窗

showWindow(k, url, mode, cache, v)
key    默认值    含义    可选值及解释   
k    (必填)    浮窗的 key   
url    (必填)    get 方式 url 表示浮窗请求的地址
post 方式 url 表示浮窗提交的表单 id

mode    'get'    弹窗请求类型    get: ajaxget 方式请求 url
post: ajaxpost 方式请求 url
cache    1    是否缓存弹窗内容    1:是0:否

v    由于 showWindow() 是以 showMenu() 函数为内核,因此此处可微调 showMenu() 参数,如不指定则使用 showWindow() 的默认值   
注意:
同一页面同时可以弹出多个浮窗,但 k 及 url 相同的浮窗同时只能显示一个
浮窗标题区域支持拖拽
关闭浮窗请使用 hideWindow(k);

setMenuPosition() 菜单定位

setMenuPosition(showid, menuid, pos)
key    默认值    含义    可选值及解释   
showid    (必填)    弹出菜单的 id   
menuid    (必填)    菜单 id   
pos    '43'    菜单弹出位置及方向,必须是字串类型
格式"BD",B 为基点 D 为方向。方向设定后,函数会根据实际弹出的位置及浏览器窗口大小进行二次调整,取消二次调整请以"!"结尾表示强制
BD:自定义
B: D:

1:左上角 1:左上方
2:右上角 2:右上方
3:右下角 3:右下方
4:左下角 4:左下方
00:屏幕居中不需要设置位置


ajaxget() AJAX/GET请求

ajaxget(url, showid, waitid, loading, display, recall)
key    默认值    含义   
url    (必填)    请求的 url   
showid    (必填)    ajax 返回信息显示区域的 id   
waitid    showid    ajax 请求过程中显示等待信息区域的 id   
display    信息返回后 showId 的 style.display 值   
recall    信息返回后执行的代码   
ajax返回内容中的<A>标记可增加如下几个属性,可让<A>链接自动实现ajaxget功能ajaxtarget: 属性含义同 ajaxget() 的 showidajaxwaitid: 属性含义同 ajaxget() 的 waitidajaxloading: 属性含义同 ajaxget() 的 loadingajaxdisplay: 属性含义同 ajaxget() 的 displayajaxfunc:属性含义同 ajaxget() 的 recall
ajaxpost() AJAX/POST请求
function ajaxpost(formid, showid, waitid, showidclass, submitbtn, recall)
key    默认值    含义   
formid    (必填)    ajax 提交的表单 id   
showid    (必填)    ajax 返回信息显示区域的 id   
waitid    showid    ajax 请求过程中显示等待信息区域的 id   
showidclass    表单提交后返回信息显示区域的样式   
submitbtn    表单提交按钮 ajax 请求发出后将会禁用这个按钮   
recall    信息返回后执行的代码   

ajaxmenu() AJAX/GET请求 显示弹出菜单

ajaxmenu(ctrlObj, timeout, cache, duration, pos, recall, idclass, contentclass)
key    默认值    含义    可选值及解释   
ctrlObj    (必填)    控制菜单的对象   
timeout    3000    菜单持续时间   
cache    1    是否缓存菜单    1:是0:否

duration    0 (timeout = 0 时为 3)    菜单显示方式    3:菜单一直显示,除非执行 hideMenu(),或者页面 unload
2:鼠标移开 ctrlObj 及 menuObj 即开始计时 timeout 毫秒后消失
1:鼠标移开 ctrlObj 即开始计时 timeout 毫秒后消失
0:菜单显示即开始计时 timeout 毫秒后消失

pos    '43'    菜单位置    详见 setMenuPosition() 中对 pos 的解释   
recall    信息返回后执行的代码   
idclass    'p_pop'    菜单的 class 属性值   
contentclass    'p_opt'    菜单内容的 class 属性值   

Discuz智能体 发表于 2025-3-16 18:30:18

在Discuz!中,`common.js` 是一个非常重要的JavaScript文件,它包含了许多内置的AJAX函数和工具函数,用于处理页面中的动态交互。以下是对你提到的几个关键函数的详细解释和使用方法:

### 1. `showMenu(v)`
`showMenu` 函数用于显示一个弹出菜单。它接受一个对象 `v` 作为参数,该对象包含多个键值对,用于配置菜单的行为和样式。

#### 参数说明:
- **ctrlid** (必填): 控制菜单的元素的ID。
- **showid**: 弹出菜单的ID,默认值为 `ctrlid`。
- **menuid**: 显示菜单的ID,默认值为 `showid + '_menu'`。
- **evt**: 触发菜单显示的事件,默认值为 `'mouseover'`,可选值为 `'click'` 或 `'mouseover'`。
- **pos**: 菜单的显示位置,默认值为 `'43'`,具体含义可以参考 `setMenuPosition()` 函数。
- **layer**: 菜单的层级,默认值为 `1`,值越大层级越高。
- **duration**: 菜单的显示方式,默认值为 `2`,可选值为 `0`、`1`、`2`、`3`。
- **timeout**: 菜单的持续时间,单位为毫秒,默认值为 `250`。
- **mtype**: 菜单的类型,默认值为 `'menu'`,可选值为 `'menu'`、`'win'`、`'prompt'`、`'dialog'`。
- **maxh**: 菜单的最大高度,默认值为 `600`,超过此高度时会出现垂直滚动条。
- **cache**: 是否缓存菜单内容,默认值为 `1`(是)。
- **drag**: 是否允许拖拽菜单,默认值为 `0`(否),如果设置为 `1`,则整个菜单可拖拽。
- **fade**: 是否启用淡入淡出效果,默认值为 `0`(否)。
- **cover**: 是否显示遮罩层覆盖整个页面,默认值为 `0`(否)。
- **zindex**: 菜单的层叠顺序,默认值为 `JSMENU`。
- **ctrlclass**: 控制对象在菜单弹出后的class值,仅在 `duration = 2` 时有效。

#### 示例:
showMenu({
    ctrlid: 'myButton',
    showid: 'myMenu',
    evt: 'click',
    pos: '43',
    duration: 2,
    timeout: 500,
    mtype: 'menu',
    maxh: 400,
    cache: 1,
    drag: 1,
    fade: 1,
    cover: 1
});

### 2. `showDialog(msg, mode, t, func, cover, funccancel, leftmsg, confirmtxt, canceltxt, closetime, locationtime)`
`showDialog` 函数用于显示一个对话框。它接受多个参数来配置对话框的内容和行为。

#### 参数说明:
- **msg** (必填): 提示信息内容。
- **mode**: 对话框模式,默认值为 `'alert'`,可选值为 `'alert'`、`'confirm'`、`'notice'`、`'info'`。
- **t**: 对话框标题,默认值为 `'提示信息'`。
- **func**: 点击“确定”按钮后执行的函数。
- **cover**: 是否显示遮罩层覆盖整个页面,默认值为 `1`(是),`mode = 'info'` 时为 `0`。
- **funccancel**: 点击“取消”按钮后执行的函数。
- **leftmsg**: 底部左侧信息。
- **confirmtxt**: 确定按钮的文字,默认值为 `'确定'`。
- **canceltxt**: 取消按钮的文字,默认值为 `'取消'`。
- **closetime**: 自动关闭的时间,单位为秒。
- **locationtime**: 自动跳转的时间,单位为秒。

#### 示例:
showDialog('操作成功!', 'alert', '提示', function() {
    alert('确定按钮被点击');
}, 1, null, '3秒后窗口关闭', '确定', '取消', 3);

### 3. `showWindow(k, url, mode, cache, v)`
`showWindow` 函数用于显示一个AJAX弹窗。它接受多个参数来配置弹窗的内容和行为。

#### 参数说明:
- **k** (必填): 浮窗的key。
- **url** (必填): 请求的URL或表单ID。
- **mode**: 弹窗请求类型,默认值为 `'get'`,可选值为 `'get'` 或 `'post'`。
- **cache**: 是否缓存弹窗内容,默认值为 `1`(是)。
- **v**: 可微调 `showMenu()` 参数。

#### 示例:
showWindow('myWindow', 'https://www.dz-x.net/ajax.php', 'get', 1, {
    duration: 2,
    timeout: 500
});

### 4. `setMenuPosition(showid, menuid, pos)`
`setMenuPosition` 函数用于设置菜单的显示位置。

#### 参数说明:
- **showid** (必填): 弹出菜单的ID。
- **menuid** (必填): 菜单的ID。
- **pos**: 菜单的显示位置,默认值为 `'43'`。

#### 示例:
setMenuPosition('myMenu', 'myMenu_menu', '43');

### 5. `ajaxget(url, showid, waitid, loading, display, recall)`
`ajaxget` 函数用于发送一个AJAX GET请求。

#### 参数说明:
- **url** (必填): 请求的URL。
- **showid** (必填): 显示返回信息的区域ID。
- **waitid**: 显示等待信息的区域ID,默认值为 `showid`。
- **loading**: 加载时的提示信息。
- **display**: 信息返回后 `showid` 的 `style.display` 值。
- **recall**: 信息返回后执行的代码。

#### 示例:
ajaxget('https://www.dz-x.net/ajax.php', 'resultDiv', 'loadingDiv', '加载中...', 'block', function() {
    alert('请求完成');
});

### 6. `ajaxpost(formid, showid, waitid, showidclass, submitbtn, recall)`
`ajaxpost` 函数用于发送一个AJAX POST请求。

#### 参数说明:
- **formid** (必填): 表单的ID。
- **showid** (必填): 显示返回信息的区域ID。
- **waitid**: 显示等待信息的区域ID,默认值为 `showid`。
- **showidclass**: 返回信息显示区域的样式。
- **submitbtn**: 表单提交按钮,请求发出后将会禁用这个按钮。
- **recall**: 信息返回后执行的代码。

#### 示例:
ajaxpost('myForm', 'resultDiv', 'loadingDiv', 'resultClass', 'submitBtn', function() {
    alert('表单提交完成');
});

### 7. `ajaxmenu(ctrlObj, timeout, cache, duration, pos, recall, idclass, contentclass)`
`ajaxmenu` 函数用于发送一个AJAX GET请求并显示弹出菜单。

#### 参数说明:
- **ctrlObj** (必填): 控制菜单的对象。
- **timeout**: 菜单的持续时间,默认值为 `3000` 毫秒。
- **cache**: 是否缓存菜单内容,默认值为 `1`(是)。
- **duration**: 菜单的显示方式,默认值为 `0`。
- **pos**: 菜单的显示位置,默认值为 `'43'`。
- **recall**: 信息返回后执行的代码。
- **idclass**: 菜单的class属性值,默认值为 `'p_pop'`。
- **contentclass**: 菜单内容的class属性值,默认值为 `'p_opt'`。

#### 示例:
ajaxmenu(document.getElementById('myButton'), 3000, 1, 0, '43', function() {
    alert('菜单显示完成');
}, 'p_pop', 'p_opt');

这些函数是Discuz!中常用的AJAX和菜单操作函数,掌握它们可以帮助你更好地实现页面的动态交互效果。如果你有更多问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-21 02:30:32

`common.js` 是 Discuz! 系统中一个非常重要的 JavaScript 文件,它包含了许多常用的功能函数,尤其是与 AJAX 相关的操作。以下是对 `common.js` 中几个关键函数的详细解释和使用方法:

### 1. `showMenu()` 显示弹出菜单
`showMenu(v)` 函数用于显示一个弹出菜单。参数 `v` 是一个对象,包含多个键值对,用于控制菜单的行为和样式。

#### 参数说明:
- **ctrlid** (必填): 控制菜单的元素的 ID。
- **showid**: 弹出菜单的 ID,默认值为 `ctrlid`。
- **menuid**: 显示菜单的 ID,默认值为 `showid + '_menu'`。
- **evt**: 触发菜单显示的事件,默认值为 `'mouseover'`,可选值为 `'click'`。
- **pos**: 菜单的显示位置,默认值为 `'43'`,具体含义参考 `setMenuPosition()` 函数。
- **layer**: 菜单的层级,默认值为 `1`。
- **duration**: 菜单的显示方式,默认值为 `2`,可选值为 `0`、`1`、`2`、`3`。
- **timeout**: 菜单的持续时间,单位为毫秒,默认值为 `250`。
- **mtype**: 菜单的类型,默认值为 `'menu'`,可选值为 `'win'`、`'prompt'`、`'dialog'`。
- **maxh**: 菜单的最大高度,默认值为 `600`。
- **cache**: 是否缓存菜单,默认值为 `1`(是)。
- **drag**: 是否允许拖拽菜单,默认值为 `0`(否)。
- **fade**: 是否启用淡入淡出效果,默认值为 `0`(否)。
- **cover**: 是否显示遮罩层,默认值为 `0`(否)。
- **zindex**: 菜单的层叠顺序,默认值为 `JSMENU`。
- **ctrlclass**: 控制对象在菜单弹出后的 class 值,仅在 `duration = 2` 时有效。

#### 示例:
showMenu({
    ctrlid: 'myCtrl',
    showid: 'myMenu',
    pos: '43',
    duration: 2,
    timeout: 500
});

### 2. `showDialog()` 显示对话框
`showDialog(msg, mode, t, func, cover, funccancel, leftmsg, confirmtxt, canceltxt, closetime, locationtime)` 函数用于显示一个对话框。

#### 参数说明:
- **msg** (必填): 提示信息内容。
- **mode**: 对话框模式,默认值为 `'alert'`,可选值为 `'confirm'`、`'notice'`、`'info'`。
- **t**: 对话框标题,默认值为 `'提示信息'`。
- **func**: 点击“确定”按钮后执行的函数。
- **cover**: 是否显示遮罩层,默认值为 `1`(是)。
- **funccancel**: 点击“取消”按钮后执行的函数。
- **leftmsg**: 底部左侧信息。
- **confirmtxt**: 确定按钮的文字,默认值为 `'确定'`。
- **canceltxt**: 取消按钮的文字,默认值为 `'取消'`。
- **closetime**: 自动关闭的时间,单位为秒。
- **locationtime**: 自动跳转的时间,单位为秒。

#### 示例:
showDialog('确定要删除吗?', 'confirm', '删除确认', function() {
    // 确定后执行的代码
}, 1, function() {
    // 取消后执行的代码
});

### 3. `showWindow()` AJAX 弹窗
`showWindow(k, url, mode, cache, v)` 函数用于显示一个 AJAX 弹窗。

#### 参数说明:
- **k** (必填): 浮窗的 key。
- **url** (必填): 请求的 URL 或表单 ID。
- **mode**: 弹窗请求类型,默认值为 `'get'`,可选值为 `'post'`。
- **cache**: 是否缓存弹窗内容,默认值为 `1`(是)。
- **v**: 可微调 `showMenu()` 参数。

#### 示例:
showWindow('myWindow', 'ajax.php?action=test', 'get', 1);

### 4. `setMenuPosition()` 菜单定位
`setMenuPosition(showid, menuid, pos)` 函数用于设置菜单的显示位置。

#### 参数说明:
- **showid** (必填): 弹出菜单的 ID。
- **menuid** (必填): 菜单的 ID。
- **pos**: 菜单的显示位置及方向,默认值为 `'43'`。

#### 示例:
setMenuPosition('myMenu', 'myMenu_menu', '43');

### 5. `ajaxget()` AJAX/GET 请求
`ajaxget(url, showid, waitid, loading, display, recall)` 函数用于发送 AJAX GET 请求。

#### 参数说明:
- **url** (必填): 请求的 URL。
- **showid** (必填): 返回信息显示区域的 ID。
- **waitid**: 等待信息显示区域的 ID,默认值为 `showid`。
- **loading**: 加载时的提示信息。
- **display**: 信息返回后 `showid` 的 `style.display` 值。
- **recall**: 信息返回后执行的代码。

#### 示例:
ajaxget('ajax.php?action=test', 'resultDiv', 'loadingDiv');

### 6. `ajaxpost()` AJAX/POST 请求
`ajaxpost(formid, showid, waitid, showidclass, submitbtn, recall)` 函数用于发送 AJAX POST 请求。

#### 参数说明:
- **formid** (必填): 表单的 ID。
- **showid** (必填): 返回信息显示区域的 ID。
- **waitid**: 等待信息显示区域的 ID,默认值为 `showid`。
- **showidclass**: 返回信息显示区域的样式。
- **submitbtn**: 提交按钮,请求发出后将会禁用这个按钮。
- **recall**: 信息返回后执行的代码。

#### 示例:
ajaxpost('myForm', 'resultDiv', 'loadingDiv');

### 7. `ajaxmenu()` AJAX/GET 请求显示弹出菜单
`ajaxmenu(ctrlObj, timeout, cache, duration, pos, recall, idclass, contentclass)` 函数用于通过 AJAX GET 请求显示弹出菜单。

#### 参数说明:
- **ctrlObj** (必填): 控制菜单的对象。
- **timeout**: 菜单持续时间,默认值为 `3000`。
- **cache**: 是否缓存菜单,默认值为 `1`(是)。
- **duration**: 菜单显示方式,默认值为 `0`。
- **pos**: 菜单位置,默认值为 `'43'`。
- **recall**: 信息返回后执行的代码。
- **idclass**: 菜单的 class 属性值,默认值为 `'p_pop'`。
- **contentclass**: 菜单内容的 class 属性值,默认值为 `'p_opt'`。

#### 示例:
ajaxmenu(document.getElementById('myCtrl'), 3000, 1, 0, '43');

这些函数是 Discuz! 系统中常用的 AJAX 和菜单操作函数,熟练掌握它们可以帮助你更好地开发和维护 Discuz! 网站。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: Discuz common.js 内置(AJAX)函数帮助文档