ZhiYeJianKang_PeiXun/Song.Site/Manage/Questions/Scripts/KnowledgeAjax.js
2025-02-20 15:41:53 +08:00

262 lines
9.1 KiB
JavaScript

/*一些基本参数*/
//当前分页,每页取多少
window.knSize = 10;
//当前分页索引
window.knIndex = 1;
//获取的记录
window.knSumCount = 0;
//上下级翻页时的当前索引
var DateIndex = -1;
//所有的数据行
var DataCount = 0;
$(function () {
_KnowledgeAjax_int();
//监听输入框
SetSuggestEvent();
//监控输入变更
setInterval("InputChange()", 200);
if ($("#suggestListBox").size() > 0) {
$("#suggestListBox").dbclick(function () {
$(this).hide();
})
}
});
//初始化
function _KnowledgeAjax_int() {
var knTit = $.trim($("input[name$=tbKnTit]").val());
if (knTit == "") {
$("span[id$=knTitle]").text("关联:无");
}
else {
$("span[id$=knTitle]").html("关联:<a href=\"/Knowledge.ashx?id=" + $("input[name$=tbKnID]").val() + "\" target=\"_blank\">" + knTit + "</a>");
// $("span[id$=knTitle]").text("关联:" + knTit);
}
//资料输入框
var tbKns = $("*[name$=tbKnsName]");
tbKns.focus(function () {
$(this).attr("isFocus", "true");
_tbKnsNameFocus();
});
tbKns.blur(function () {
$(this).attr("isFocus", "false");
});
$("*[name$=ddlKnlSort]").change(function () {
window.knIndex = 1;
$("*[name$=tbKnsName]").focus();
var val = $("*[name$=tbKnsName]").val();
var knsid = $(this).val();
var couid = $("*[name$=ddlCourse]").val();
_getList(knsid, couid, window.knIndex, window.knSize, val, successFunc, loadfunc, unloadfunc, errfunc);
});
}
//资料输入框焦点事件
function _tbKnsNameFocus() {
var val = $("*[name$=tbKnsName]").val();
var knsid = $("*[name$=ddlKnlSort]").val();
var couid= $("*[name$=ddlCourse]").val();
var box = $("#suggestListBox:visible");
if (box.size() < 1)
_getList(knsid,couid, window.knIndex, window.knSize, val, successFunc, loadfunc, unloadfunc, errfunc);
}
//监控输入变更
function InputChange() {
var tb = $("*[name$=tbKnsName]");
var val = tb.val();
//是否拥有焦点
var isFocus = tb.attr("isFocus");
if (isFocus && isFocus == "true") {
if (val == window.InputChangeText) return;
} else {
if (typeof (val) == "undefined" || $.trim(val) == "" || val == window.InputChangeText) return;
}
window.InputChangeText = val;
window.knIndex = 1;
//内容变更则执行
//知识库分类Id、课程id
var knsid = $("*[name$=ddlKnlSort]").val();
var couid= $("*[name$=ddlCourse]").val();
_getList(knsid,couid, window.knIndex, window.knSize, val, successFunc, loadfunc, unloadfunc, errfunc);
}
//获取信息列表
function _getList(knsid, couid, index, size, sear, successFunc, loadfunc, unloadfunc, errfunc) {
sear = encodeURIComponent(sear);
var urlPath = "Knowledge.ashx?knsid=" + knsid + "&couid="+couid+"&index=" + index + "&size=" + size + "&sear=" + sear + "&timestamp=" + new Date().getTime();
$.ajax({
type: "POST", url: urlPath, dataType: "text", data: null,
//开始,进行预载
beforeSend: function (XMLHttpRequest, textStatus) {
if (loadfunc != null) loadfunc(XMLHttpRequest, textStatus);
},
//加载出错
error: function (XMLHttpRequest, textStatus, errorThrown) {
if (errfunc != null) errfunc(XMLHttpRequest, textStatus, errorThrown);
if (unloadfunc != null) unloadfunc();
},
//加载成功!
success: function (data) {
if (successFunc != null) successFunc(data);
if (unloadfunc != null) unloadfunc();
}
});
}
//预载
function loadfunc() {
var tb = $("*[name$=tbKnsName]");
var offset = tb.offset();
var box = $("#suggestLoadingBox");
if (box.size() < 1) {
var html = "<div id=\"suggestLoadingBox\" class=\"suggestLoadingBox\">";
html += "<div>正在加载……<br/>";
html += "<img src=\"../Images/loading/load_016.gif\"></div>";
html += "</div>";
$("body").append(html);
box = $("#suggestLoadingBox");
}
box.css({
position: "absolute",
top: offset.top + tb.height() + 1,
left: offset.left - box.width() + tb.width() - 10
});
}
function unloadfunc() {
var box = $("#suggestLoadingBox");
box.hide();
}
function errfunc() {
$("#suggestListBox").hide();
var tb = $("*[name$=tbKnsName]");
var offset = tb.offset();
var box = $("#suggestErrBox");
if (box.size() < 1) {
var html = "<div id=\"suggestErrBox\">";
html += "<div>加载错误,请与系统管理员</div>";
$("body").append(html);
box = $("#suggestErrBox");
}
box.css({
position: "absolute",
top: offset.top + tb.height() + 1,
left: offset.left - box.width() + tb.width() - 10
});
}
function successFunc(data) {
//json转换
var data = eval(data);
//生成面板
var box = buildBox(data);
var SumCount = data[data.length - 1].SumCount;
if (SumCount > 0) setListData(data, box);
}
//构建下拉面板
function buildBox(data) {
//搜索输入框
var tb = $("*[name$=tbKnsName]");
var offset = tb.offset();
//构建下拉面板
if ($("#suggestListBox").size() < 1)
$("body").append("<div id=\"suggestListBox\"></div>");
var box = $("#suggestListBox");
box.css({
position: "absolute",
top: offset.top + tb.height() + 1,
left: offset.left
});
box.show();
//设置初始面板效果
DataCount = data.length - 1;
var SumCount = data[data.length - 1].SumCount;
window.knSumCount = SumCount;
if (SumCount < 1) {
box.html("<dl><dd>没有相关资料!</dd></dl>");
} else {
var html = "<div id=\"suggestNavBox\">";
html += "<div id=\"suggestCloseBtn\">&nbsp;</div>";
html += "<div id=\"suggestNavBtn\"><span id=\"prev\">上一页</span><span id=\"next\">下一页</span></div>";
html += "</div>";
box.html("<dl></dl>" + html);
}
box.find("#suggestCloseBtn").click(function () {
$("#suggestListBox").hide();
});
//上一页
box.find("#prev").click(function () {
var knsid = $("select[name$=ddlKnlSort]").val();
var couid= $("*[name$=ddlCourse]").val();
var val = $("input[name$=tbKnsName]").val();
if (window.knIndex > 1)
_getList(knsid,couid, --window.knIndex, window.knSize, val, successFunc, loadfunc, unloadfunc, errfunc);
});
//下页
box.find("#next").click(function () {
var knsid = $("select[name$=ddlKnlSort]").val();
var couid= $("*[name$=ddlCourse]").val();
var val = $("input[name$=tbKnsName]").val();
var pageNum = window.knSumCount / window.knSize;
if (window.knIndex < pageNum)
_getList(knsid,couid, ++window.knIndex, window.knSize, val, successFunc, loadfunc, unloadfunc, errfunc);
});
return box;
}
//设置获取的数据
function setListData(data, box) {
//生成数据列菜单
var html = "";
for (var i = 0; i < data.length - 1; i++) {
var n = data[i];
var index = i + window.knSize * (window.knIndex - 1) + 1;
html += "<dd knid=\"" + n.Kn_ID + "\" index=\"" + index + "\">" + index + "、<span>" + unescape(n.Kn_Title) + "</span></dd>";
}
box.find("dl").html(html);
//事件
var dd = box.find("dd");
dd.hover(function () {
$(this).parent().find("dd").removeClass("over");
$(this).addClass("over");
var index = $(this).attr("index");
DateIndex = Number(index);
//SugTarget.attr("value",$(this).text());
}, function () { });
dd.click(function () {
SetSuggestResrult($(this));
});
}
//设置上下翻的事件
function SetSuggestEvent() {
$(document).keyup(function (e) {//监听上下翻
if (/tbKnsName/i.test(e.target.id)) {//只代理特定元素,提高性能
if (e.which === 38) { //up 8
DateIndex--;
if (DateIndex < 0)
DateIndex = DataCount - 1;
} else if (e.which === 40) {//down 2
DateIndex++;
if (DateIndex >= DataCount)
DateIndex = 0;
$("#suggestListBox").show();
} else if (e.which === 39 || e.which === 13) { //向右键或回车选中
var curr = $("#suggestListBox:visible").find("dd.over");
if (curr.size() < 1) return;
SetSuggestResrult(curr);
}
}
var index = DateIndex >= 0 && DateIndex <= DataCount ? DateIndex : 0;
$("#suggestListBox").find("dd").removeClass("over");
var curr = $("#suggestListBox").find("dd").eq(index);
curr.addClass("over");
});
}
//当点击选项或按向右键时,选中的操作
function SetSuggestResrult(dd) {
//当前资料的id与名称
var id = dd.attr("knid");
var title = dd.find("span").text();
//设置
$("input[name$=tbKnID]").val(id);
$("input[name$=tbKnTit]").val(title);
$("span[id$=knTitle]").html("关联:<a href=\"/Knowledge.ashx?id="+id+"\" target=\"_blank\">"+title+"</a>");
//隐藏面板
$("#suggestListBox").hide();
}