262 lines
9.1 KiB
JavaScript
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 + "×tamp=" + 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\"> </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();
|
|
} |