| 1 |
- function completeAfter(cm, pred) {
var cur = cm.getCursor();
if (!pred || pred())
setTimeout(function () {
if (!cm.state.completionActive)
cm.showHint({
completeSingle: false
});
}, 100);
return CodeMirror.Pass;
}
function completeIfAfterLt(cm) {
return completeAfter(cm, function () {
var cur = cm.getCursor();
return cm.getRange(CodeMirror.Pos(cur.line, cur.ch - 1), cur) == "<";
});
}
function completeIfInTag(cm) {
return completeAfter(cm, function () {
var tok = cm.getTokenAt(cm.getCursor());
if (tok.type == "string" && (!/['"]/.test(tok.string.charAt(tok.string.length - 1)) || tok.string.length == 1))
return false;
var inner = CodeMirror.innerMode(cm.getMode(), tok.state).state;
return inner.tagName;
});
}
function setOnload(mode) {
window.onload = function () {
if (window.navigator.userAgent.indexOf("MSIE") >= 1) {
document.getElementById("code").style.display = "none";
} else {
var txt = document.querySelector('textarea[name=nrwj]');
//初始化编辑器
var editor = document.getElementById("code");
//editor.style.cssText = 'width:'+$(txt).width()+';height:'+$(txt).height();
codemirrorEditor = CodeMirror(editor, {
mode: mode,
lineNumbers: true,
extraKeys: {
"'.'": completeAfter,
"'<'": completeAfter,
"'/'": completeIfAfterLt,
"' '": completeIfInTag,
"'='": completeIfInTag,
"Alt-/": "autocomplete"
},
value: document.querySelector("textarea[name=nrwj]").value
});
txt.style.display = "none";
txt.form.onsubmit = submitbj;
var changeText = "";
codemirrorEditor.on("change", function (instance, changeobj) {
if (changeobj.text) {
changeText = codemirrorEditor.getLine(changeobj.to.line).replace(/^\s+|\s+$/g, '')
}
if (changeText)
$("[name=tjxx]").val((changeText + " ").slice(-300, -1))
txt.value = codemirrorEditor.getValue();
txt.change&&txt.change();
})
}
};
}
function initJsEditor() {
setOnload("text/javascript");
}
function initHtmlEditor() {
setOnload("text/html");
}
function initXmlEditor() {
setOnload("application/xml");
}
function initCssEditor() {
setOnload("text/css");
}
function submitbj() { //提交表单前执行此方法
$("input[type='checkbox']").each(function () {
if (!$(this).is(':checked')) {
$(this).val(0);
}
$(this).prop("checked", "true");
});
if (typeof(codemirrorEditor) != 'undefined') {
document.querySelector('textarea[name=nrwj]').value = codemirrorEditor.getValue();
}
//with (document.buJianShuXingForm) {
//增加应用功能部件19by小庄
// submit();
//}
}
// 再增加,页面统一用。Lin
// 来自 codemirror.init.js 之 setOnload(mode)
// 去掉 window.onload =,改为普通方法 -- 由页面决定
function initCmEditor(mode) {
/* 去掉 window.onload =,改为普通方法 -- 由页面决定。Lin
window.onload = function () {
*/
/// 再增加,使用逻辑的 mode 名。Lin
var modeStr;
switch (mode) {
case "js":
modeStr = "text/javascript";
break;
case "html":
modeStr = "text/html";
break;
case "css":
modeStr = "text/css";
break;
default:
modeStr = "application/xml";
}
///
if (window.navigator.userAgent.indexOf("MSIE") >= 1) {
document.getElementById("code").style.display = "none";
} else {
/* 再移到下面用到的地方。Lin
var txt = document.querySelector('textarea[name=nrwj]');
*/
//初始化编辑器
var editor = document.getElementById("code");
//editor.style.cssText = 'width:'+$(txt).width()+';height:'+$(txt).height();
codemirrorEditor = CodeMirror(editor, {
mode: modeStr, // : mode,。Lin
lineNumbers: true,
/// 再增加。Lin
indentUnit: 4,
indentWithTabs: true,
/* 不起作用,奇怪???Lin
highlightActiveLine: true,
styleActiveLine: true,
*/
///
extraKeys: {
"'.'": completeAfter,
"'<'": completeAfter,
"'/'": completeIfAfterLt,
"' '": completeIfInTag,
"'='": completeIfInTag,
"Alt-/": "autocomplete"
},
/* 再去掉,移到 CodeMirror( 外面 -- 下面 -- 页面可以没有 <textarea name="nrwj"。Lin
value: document.querySelector("textarea[name=nrwj]").value
*/
});
/// 从上面移到这。Lin
var txt = document.querySelector('textarea[name=nrwj]');
///
/// 再增加,页面可以没有 <textarea name="nrwj"。Lin
if (!txt)
return;
///
/// 再增加,从 CodeMirror( 里面移到这 -- 页面可以没有 <textarea name="nrwj"。Lin
// value: document.querySelector("textarea[name=nrwj]").value
codemirrorEditor.setValue(txt.value);
///
txt.style.display = "none";
/* 再改,避免抛出错误 -- 页面可能没写 <form。Lin
txt.form.onsubmit = submitbj;
*/
if (txt.form)
txt.form.onsubmit = submitbj;
var changeText = "";
codemirrorEditor.on("change", function (instance, changeobj) {
if (changeobj.text) {
changeText = codemirrorEditor.getLine(changeobj.to.line).replace(/^\s+|\s+$/g, '')
}
if (changeText)
$("[name=tjxx]").val((changeText + " ").slice(-300, -1))
txt.value = codemirrorEditor.getValue();
txt.change&&txt.change();
})
}
/* 去掉 window.onload =,改为普通方法 -- 由页面决定。Lin
};
*/
}
|