Merge branch 'dev_shixun_project' of https://git.trustie.net/jacknudt/trustieforge into dev_shixun_project
This commit is contained in:
commit
6f49950caa
|
@ -1,111 +1,140 @@
|
|||
<li class="clearfix">
|
||||
<label class=" panel-form-label fl"><span class="c_red mr5">*</span>名称:</label>
|
||||
<%= f.text_field :subject, :class => "panel-form-width-690 panel-form-height-30 fl", :no_label => true, :placeholder => "请输入当前任务的名称(此信息将提前泄露给学员)" %>
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<label class=" panel-form-label fl">预备知识:</label>
|
||||
<%= f.text_area :ready_knowledge, :class => "panel-form-width-690 panel-form-height-150 fl task-textarea-pd", :no_label => true, :placeholder => "请输入完成当前任务依赖的知识点或者其它相关信息,指导学员完成任务" %>
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<label class=" panel-form-label fl"><span class="c_red mr5">*</span>过关任务:</label>
|
||||
<%= f.text_area :task_pass, :class => "panel-form-width-690 panel-form-height-150 fl task-textarea-pd", :no_label => true %>
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<label class=" panel-form-label fl">样例设置:</label>
|
||||
<ul class="fl task-bg-grey ">
|
||||
<li class="clearfix">
|
||||
<p class="clearfix">
|
||||
<span class="color-green fb fl">样例1</span>
|
||||
<span class="color-grey fr" style="font-size:12px;">温馨提示:输入样例供学员参考。</span>
|
||||
</p>
|
||||
<input type="text" class="panel-form-width-670 panel-form-height-30 mb10" placeholder="样例输入" />
|
||||
<input type="text" class="panel-form-width-670 panel-form-height-30 " placeholder="样例输出" />
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<p class="clearfix">
|
||||
<span class="color-green fb fl">样例2</span>
|
||||
<a href="#" title="增加"><i class="fa fa-plus-circle color-grey font-16 ml10 fl mt12"></i></a>
|
||||
<a href="#" title="删除"><i class="fa fa-times-circle color-grey font-16 ml10 fl mt12"></i></a>
|
||||
</p>
|
||||
<input type="text" class="panel-form-width-670 panel-form-height-30 mb10" placeholder="样例输入" />
|
||||
<input type="text" class="panel-form-width-670 panel-form-height-30 " placeholder="样例输出" />
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<label class=" panel-form-label fl">测试集设置:</label>
|
||||
<ul class="fl task-bg-grey ">
|
||||
<li class="clearfix">
|
||||
<p class="clearfix">
|
||||
<span class="color-green fb fl">测试1</span>
|
||||
<span class="color-grey fr" style="font-size:12px;">温馨提示:在学员"提交评测"时进行自动检测。</span>
|
||||
</p>
|
||||
<input type="text" class="panel-form-width-670 panel-form-height-30 mb10" placeholder="测试输入" />
|
||||
<input type="text" class="panel-form-width-670 panel-form-height-30 " placeholder="测试输出" />
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<p class="clearfix">
|
||||
<span class="color-green fb fl">测试2</span>
|
||||
<a href="#" title="增加"><i class="fa fa-plus-circle color-grey font-16 ml10 fl mt12"></i></a>
|
||||
<a href="#" title="删除"><i class="fa fa-times-circle color-grey font-16 ml10 fl mt12"></i></a>
|
||||
</p>
|
||||
<input type="text" class="panel-form-width-670 panel-form-height-30 mb10" placeholder="测试输入" />
|
||||
<input type="text" class="panel-form-width-670 panel-form-height-30 " placeholder="测试输出" />
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<label class=" panel-form-label fl"> 知识/技能点:</label>
|
||||
<div class="fl task-bd-grey">
|
||||
<div class="task-tag tag-grey mb10 mr10 fl">
|
||||
<button data-dismiss="alert" class="close fr mt3 ml5" type="button">×</button>
|
||||
使用交互模式的 Python3 解释器
|
||||
<%= javascript_include_tag 'homework', 'baiduTemplate', 'jquery.datetimepicker.js' %>
|
||||
<script id="t:sample-answer-list" type="text/html">
|
||||
<li class="clearfix">
|
||||
<p class="clearfix">
|
||||
<span class="color-green fb fl" name="sample_inputs_label"></span>
|
||||
<a href="javascript:void(0)" title="增加" class="test_icon_add"><i class="fa fa-plus-circle color-grey font-16 ml10 fl mt12"></i></a>
|
||||
<a href="javascript:void(0)" title="删除" class="test_icon_remove"><i class="fa fa-times-circle color-grey font-16 ml10 fl mt12"></i></a>
|
||||
</p>
|
||||
<input type="text" class="panel-form-width-670 panel-form-height-30 mb10" name="program[input][]" id="textarea_input_test" placeholder="样例输入" />
|
||||
<input type="text" class="panel-form-width-670 panel-form-height-30" name="program[output][]" id="textarea_output_test" placeholder="样例输出" />
|
||||
</li>
|
||||
</script>
|
||||
<div id="shixun_form">
|
||||
<li class="clearfix">
|
||||
<label class=" panel-form-label fl"><span class="c_red mr5">*</span>名称:</label>
|
||||
<%= f.text_field :subject, :class => "panel-form-width-690 panel-form-height-30 fl", :no_label => true, :placeholder => "请输入当前任务的名称(此信息将提前泄露给学员)" %>
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<label class=" panel-form-label fl">预备知识:</label>
|
||||
<%= f.text_area :ready_knowledge, :class => "panel-form-width-690 panel-form-height-150 fl task-textarea-pd", :no_label => true, :placeholder => "请输入完成当前任务依赖的知识点或者其它相关信息,指导学员完成任务" %>
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<label class=" panel-form-label fl"><span class="c_red mr5">*</span>过关任务:</label>
|
||||
<%= f.text_area :task_pass, :class => "panel-form-width-690 panel-form-height-150 fl task-textarea-pd", :no_label => true %>
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<label class=" panel-form-label fl">样例设置:</label>
|
||||
<ul class="fl task-bg-grey">
|
||||
<li class="clearfix">
|
||||
<p class="clearfix">
|
||||
<span class="color-green fb fl" name="sample_inputs_label">样例1</span>
|
||||
<span class="color-grey fr" style="font-size:12px;">温馨提示:输入样例供学员参考。</span>
|
||||
<a href="javascript:void(0)" title="增加" class="test_icon_add"><i class="fa fa-plus-circle color-grey font-16 ml10 fl mt12"></i></a>
|
||||
</p>
|
||||
<input type="text" class="panel-form-width-670 panel-form-height-30 mb10" name="program[input][]" id="textarea_input_test" placeholder="样例输入" />
|
||||
<input type="text" class="panel-form-width-670 panel-form-height-30" name="program[output][]" id="textarea_output_test" placeholder="样例输出" />
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<label class=" panel-form-label fl">测试集设置:</label>
|
||||
<ul class="fl task-bg-grey ">
|
||||
<li class="clearfix">
|
||||
<p class="clearfix">
|
||||
<span class="color-green fb fl">测试1</span>
|
||||
<span class="color-grey fr" style="font-size:12px;">温馨提示:在学员"提交评测"时进行自动检测。</span>
|
||||
<a href="#" title="增加"><i class="fa fa-plus-circle color-grey font-16 ml10 fl mt12"></i></a>
|
||||
<a href="#" title="删除"><i class="fa fa-times-circle color-grey font-16 ml10 fl mt12"></i></a>
|
||||
</p>
|
||||
<input type="text" class="panel-form-width-670 panel-form-height-30 mb10" placeholder="测试输入" />
|
||||
<input type="text" class="panel-form-width-670 panel-form-height-30 " placeholder="测试输出" />
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<label class=" panel-form-label fl"> 知识/技能点:</label>
|
||||
<div class="fl task-bd-grey">
|
||||
<div class="task-tag tag-grey mb10 mr10 fl">
|
||||
<button data-dismiss="alert" class="close fr mt3 ml5" type="button">×</button>
|
||||
使用交互模式的 Python3 解释器
|
||||
</div>
|
||||
<div class="task-tag tag-grey mb10 mr10 fl">
|
||||
<button data-dismiss="alert" class="close fr mt3 ml5" type="button">×</button>
|
||||
简单使用 vim 编写脚本文件并执行这个脚本文件
|
||||
</div>
|
||||
<div class="task-tag tag-grey mb10 mr10 fl">
|
||||
<button data-dismiss="alert" class="close fr mt3 ml5" type="button">×</button>
|
||||
Python 语法:缩进
|
||||
</div>
|
||||
<div class="task-tag tag-grey mb10 mr10 fl">
|
||||
<button data-dismiss="alert" class="close fr mt3 ml5" type="button">×</button>
|
||||
规范代码风格和注释
|
||||
</div>
|
||||
<div class="task-tag tag-grey mb10 mr10 fl">
|
||||
<button data-dismiss="alert" class="close fr mt3 ml5" type="button">×</button>
|
||||
<input type="text" class=" task-tag-input" placeholder="请输入完成本任务得到的技能(1个)" />
|
||||
</div>
|
||||
<button class="close fl mt3 " type="button">+</button>
|
||||
</div>
|
||||
<div class="task-tag tag-grey mb10 mr10 fl">
|
||||
<button data-dismiss="alert" class="close fr mt3 ml5" type="button">×</button>
|
||||
简单使用 vim 编写脚本文件并执行这个脚本文件
|
||||
</div>
|
||||
<div class="task-tag tag-grey mb10 mr10 fl">
|
||||
<button data-dismiss="alert" class="close fr mt3 ml5" type="button">×</button>
|
||||
Python 语法:缩进
|
||||
</div>
|
||||
<div class="task-tag tag-grey mb10 mr10 fl">
|
||||
<button data-dismiss="alert" class="close fr mt3 ml5" type="button">×</button>
|
||||
规范代码风格和注释
|
||||
</div>
|
||||
<div class="task-tag tag-grey mb10 mr10 fl">
|
||||
<button data-dismiss="alert" class="close fr mt3 ml5" type="button">×</button>
|
||||
<input type="text" class=" task-tag-input" placeholder="请输入完成本任务得到的技能(1个)" />
|
||||
</div>
|
||||
<button class="close fl mt3 " type="button">+</button>
|
||||
</div>
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<label class=" panel-form-label fl"> 参考答案:</label>
|
||||
<%= f.text_area :answer, :class => "panel-form-width-690 panel-form-height-150 fl task-textarea-pd", :no_label => true %>
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<label class=" panel-form-label fl"><span class="c_red mr5">*</span>分值设定:</label>
|
||||
<%= f.text_field :score, :class => "panel-form-height-30 fl", :no_label => true, :style => "padding:5px;" %>
|
||||
<!--<input type="text" class=" panel-form-height-30 fl " placeholder="25" style="padding:5px;" />-->
|
||||
<span class="fl ml5">分</span>
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<a class=" task-btn task-btn-green fr mr10" onclick="challenge_create()">保存</a>
|
||||
<a href="#" class=" task-btn fr mr10">取消</a>
|
||||
</li>
|
||||
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<label class=" panel-form-label fl"> 参考答案:</label>
|
||||
<%= f.text_area :answer, :class => "panel-form-width-690 panel-form-height-150 fl task-textarea-pd", :no_label => true %>
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<label class=" panel-form-label fl"><span class="c_red mr5">*</span>分值设定:</label>
|
||||
<%= f.text_field :score, :class => "panel-form-height-30 fl", :no_label => true, :style => "padding:5px;" %>
|
||||
<!--<input type="text" class=" panel-form-height-30 fl " placeholder="25" style="padding:5px;" />-->
|
||||
<span class="fl ml5">分</span>
|
||||
</li>
|
||||
<li class="clearfix">
|
||||
<a class=" task-btn task-btn-green fr mr10" onclick="challenge_create()">保存</a>
|
||||
<a href="#" class=" task-btn fr mr10">取消</a>
|
||||
</li>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
var bt = baidu.template;
|
||||
bt.LEFT_DELIMITER = '<!';
|
||||
bt.RIGHT_DELIMITER = '!>';
|
||||
|
||||
$("#shixun_form").on('click', 'a.test_icon_add', function () {
|
||||
var html = bt('t:sample-answer-list', null);
|
||||
$(this).parent().parent('.clearfix').after(html);
|
||||
var inputs = document.getElementsByName("sample[input][]");
|
||||
var outputs = document.getElementsByName("sample[output][]");
|
||||
var inputs_labels = document.getElementsByName("sample_inputs_label");
|
||||
for (var j = 0; j < inputs_labels.length; j++) {
|
||||
$(inputs_labels[j]).html("样例" + (j + 1));
|
||||
}
|
||||
if (inputs.length == outputs.length) {
|
||||
for (var i = 0; i < inputs.length; i++) {
|
||||
autoTextarea(inputs[i], 0, 140);
|
||||
autoTextarea(outputs[i], 0, 140);
|
||||
}
|
||||
}
|
||||
$(inputs[inputs.length - 1]).focus();
|
||||
});
|
||||
$("#shixun_form").on('click', 'a.test_icon_remove', function () {
|
||||
$(this).parent().parent('.clearfix').remove();
|
||||
var inputs_labels = document.getElementsByName("sample_inputs_label");
|
||||
for (var j = 0; j < inputs_labels.length; j++) {
|
||||
$(inputs_labels[j]).html("样例" + (j + 1));
|
||||
}
|
||||
});
|
||||
});
|
||||
var text1 = document.getElementById("textarea_sample_input_test");
|
||||
var text2 = document.getElementById("textarea_sample_output_test");
|
||||
autoTextarea(text1, 0, 140);
|
||||
autoTextarea(text2, 0, 140);
|
||||
var text3 = document.getElementById("textarea_input_test");
|
||||
var text4 = document.getElementById("textarea_output_test");
|
||||
autoTextarea2(text3, text4, 0, 140);
|
||||
autoTextarea2(text4, text3, 0, 140);
|
||||
|
||||
function challenge_create(){
|
||||
$('#new_challenge').submit();
|
||||
}
|
||||
$(function(){
|
||||
$("#training_task_position").bind('keyup', function (){
|
||||
this.value=this.value.replace(/\D/g,'')
|
||||
});
|
||||
$("#training_task_position").bind('afterpaste',function(){
|
||||
this.value=this.value.replace(/\D/g,'')
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
<%= javascript_heads %>
|
||||
<%= heads_for_theme %>
|
||||
<%= call_hook :view_layouts_base_html_head %>
|
||||
<%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2','css/common','css/public', 'css/structure','prettify', 'css/courses','css/popup','sy_public','syllabus', 'css/moduel', 'css/font-awesome','css/contest' %>
|
||||
<%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2','css/common','css/public', 'css/structure','prettify', 'css/courses','css/popup','sy_public','css/syllabus', 'css/moduel', 'css/font-awesome','css/contest','css/font-awesome' %>
|
||||
<%= javascript_include_tag "course","avatars","header","attachments",'prettify' %>
|
||||
<!-- page specific tags -->
|
||||
<%= yield :header_tags -%>
|
||||
|
|
|
@ -1046,6 +1046,165 @@ $(function(){
|
|||
});
|
||||
});
|
||||
|
||||
//textarea自适应高度 纯js写的 有浏览器判断
|
||||
/**
|
||||
* 文本框根据输入内容自适应高度
|
||||
* @param {HTMLElement} 输入框元素
|
||||
* @param {Number} 设置光标与输入框保持的距离(默认0)
|
||||
* @param {Number} 设置最大高度(可选)
|
||||
*/
|
||||
|
||||
var autoTextarea = function (elem, extra, maxHeight) {
|
||||
extra = extra || 0;
|
||||
var isFirefox = !!document.getBoxObjectFor || 'mozInnerScreenX' in window,
|
||||
isOpera = !!window.opera && !!window.opera.toString().indexOf('Opera'),
|
||||
addEvent = function (type, callback) {
|
||||
elem.addEventListener ?
|
||||
elem.addEventListener(type, callback, false) :
|
||||
elem.attachEvent('on' + type, callback);
|
||||
},
|
||||
getStyle = elem.currentStyle ? function (name) {
|
||||
var val = elem.currentStyle[name];
|
||||
|
||||
if (name === 'height' && val.search(/px/i) !== 1) {
|
||||
var rect = elem.getBoundingClientRect();
|
||||
return rect.bottom - rect.top -
|
||||
parseFloat(getStyle('paddingTop')) -
|
||||
parseFloat(getStyle('paddingBottom')) + 'px';
|
||||
};
|
||||
|
||||
return val;
|
||||
} : function (name) {
|
||||
return getComputedStyle(elem, null)[name];
|
||||
},
|
||||
minHeight = parseFloat(getStyle('height'));
|
||||
|
||||
|
||||
elem.style.resize = 'none';
|
||||
|
||||
var change = function () {
|
||||
var scrollTop, height,
|
||||
padding = 0,
|
||||
style = elem.style;
|
||||
|
||||
if (elem._length === elem.value.length) return;
|
||||
elem._length = elem.value.length;
|
||||
|
||||
if (!isFirefox && !isOpera) {
|
||||
padding = parseInt(getStyle('paddingTop')) + parseInt(getStyle('paddingBottom'));
|
||||
};
|
||||
scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
|
||||
|
||||
elem.style.height = minHeight + 'px';
|
||||
if (elem.scrollHeight > minHeight) {
|
||||
if (maxHeight && elem.scrollHeight > maxHeight) {
|
||||
height = maxHeight - padding;
|
||||
style.overflowY = 'auto';
|
||||
} else {
|
||||
height = elem.scrollHeight - padding;
|
||||
style.overflowY = 'hidden';
|
||||
};
|
||||
style.height = height + extra + 'px';
|
||||
scrollTop += parseInt(style.height) - elem.currHeight;
|
||||
document.body.scrollTop = scrollTop;
|
||||
document.documentElement.scrollTop = scrollTop;
|
||||
elem.currHeight = parseInt(style.height);
|
||||
};
|
||||
};
|
||||
|
||||
addEvent('propertychange', change);
|
||||
addEvent('input', change);
|
||||
addEvent('focus', change);
|
||||
change();
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
var autoTextarea2 = function (elem,elem2, extra, maxHeight) {
|
||||
extra = extra || 0;
|
||||
var isFirefox = !!document.getBoxObjectFor || 'mozInnerScreenX' in window,
|
||||
isOpera = !!window.opera && !!window.opera.toString().indexOf('Opera'),
|
||||
addEvent = function (element, type, callback) {
|
||||
element.addEventListener ?
|
||||
element.addEventListener(type, callback, false) :
|
||||
element.attachEvent('on' + type, callback);
|
||||
},
|
||||
getFirstStyle = elem.currentStyle ? function (name) {
|
||||
var val = elem.currentStyle[name];
|
||||
|
||||
if (name === 'height' && val.search(/px/i) !== 1) {
|
||||
var rect = elem.getBoundingClientRect();
|
||||
return rect.bottom - rect.top -
|
||||
parseFloat(getFirstStyle('paddingTop')) -
|
||||
parseFloat(getFirstStyle('paddingBottom')) + 'px';
|
||||
};
|
||||
|
||||
return val;
|
||||
} : function (name) {
|
||||
return getComputedStyle(elem, null)[name];
|
||||
},
|
||||
minHeight = parseFloat(getFirstStyle('height'));
|
||||
|
||||
elem.style.resize = 'none';
|
||||
elem2.style.resize = 'none';
|
||||
var change = function () {
|
||||
var scrollTop, height,
|
||||
padding = 0,
|
||||
style = elem.style,
|
||||
style2 = elem2.style;
|
||||
|
||||
|
||||
if (elem._length === elem.value.length) return;
|
||||
elem._length = elem.value.length;
|
||||
elem2._length = elem._length;
|
||||
if (!isFirefox && !isOpera) {
|
||||
padding = parseInt(getFirstStyle('paddingTop')) + parseInt(getFirstStyle('paddingBottom'));
|
||||
};
|
||||
scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
|
||||
|
||||
elem.style.height = minHeight + 'px';
|
||||
elem2.style.height = minHeight + 'px';
|
||||
if (elem.scrollHeight > minHeight) {
|
||||
if (maxHeight && elem.scrollHeight > maxHeight) {
|
||||
height = maxHeight - padding;
|
||||
style.overflowY = 'auto';
|
||||
style2.overflowY = 'auto';
|
||||
} else {
|
||||
height = elem.scrollHeight - padding;
|
||||
};
|
||||
style.height = height + extra + 'px';
|
||||
style2.height = height + extra + 'px';
|
||||
scrollTop += parseInt(style.height) - elem.currHeight;
|
||||
document.body.scrollTop = scrollTop;
|
||||
document.documentElement.scrollTop = scrollTop;
|
||||
elem.currHeight = parseInt(style.height);
|
||||
};
|
||||
if (elem2.scrollHeight > minHeight) {
|
||||
if (maxHeight && elem2.scrollHeight > maxHeight) {
|
||||
height = maxHeight - padding;
|
||||
style.overflowY = 'auto';
|
||||
style2.overflowY = 'auto';
|
||||
} else {
|
||||
height = elem2.scrollHeight - padding;
|
||||
};
|
||||
style.height = height + extra + 'px';
|
||||
style2.height = height + extra + 'px';
|
||||
scrollTop += parseInt(style2.height) - elem2.currHeight;
|
||||
document.body.scrollTop = scrollTop;
|
||||
document.documentElement.scrollTop = scrollTop;
|
||||
elem2.currHeight = parseInt(style2.height);
|
||||
};
|
||||
};
|
||||
|
||||
addEvent(elem, 'propertychange', change);
|
||||
addEvent(elem, 'input', change);
|
||||
addEvent(elem, 'focus', change);
|
||||
addEvent(elem2, 'propertychange', change);
|
||||
addEvent(elem2, 'input', change);
|
||||
addEvent(elem2, 'focus', change);
|
||||
change();
|
||||
};
|
||||
|
||||
|
||||
//firefox的pre标签换行
|
||||
$(document).ready(function () {
|
||||
|
|
|
@ -1479,163 +1479,6 @@ function show_student_work(url){
|
|||
);
|
||||
}
|
||||
|
||||
//textarea自适应高度 纯js写的 有浏览器判断
|
||||
/**
|
||||
* 文本框根据输入内容自适应高度
|
||||
* @param {HTMLElement} 输入框元素
|
||||
* @param {Number} 设置光标与输入框保持的距离(默认0)
|
||||
* @param {Number} 设置最大高度(可选)
|
||||
*/
|
||||
var autoTextarea = function (elem, extra, maxHeight) {
|
||||
extra = extra || 0;
|
||||
var isFirefox = !!document.getBoxObjectFor || 'mozInnerScreenX' in window,
|
||||
isOpera = !!window.opera && !!window.opera.toString().indexOf('Opera'),
|
||||
addEvent = function (type, callback) {
|
||||
elem.addEventListener ?
|
||||
elem.addEventListener(type, callback, false) :
|
||||
elem.attachEvent('on' + type, callback);
|
||||
},
|
||||
getStyle = elem.currentStyle ? function (name) {
|
||||
var val = elem.currentStyle[name];
|
||||
|
||||
if (name === 'height' && val.search(/px/i) !== 1) {
|
||||
var rect = elem.getBoundingClientRect();
|
||||
return rect.bottom - rect.top -
|
||||
parseFloat(getStyle('paddingTop')) -
|
||||
parseFloat(getStyle('paddingBottom')) + 'px';
|
||||
};
|
||||
|
||||
return val;
|
||||
} : function (name) {
|
||||
return getComputedStyle(elem, null)[name];
|
||||
},
|
||||
minHeight = parseFloat(getStyle('height'));
|
||||
|
||||
|
||||
elem.style.resize = 'none';
|
||||
|
||||
var change = function () {
|
||||
var scrollTop, height,
|
||||
padding = 0,
|
||||
style = elem.style;
|
||||
|
||||
if (elem._length === elem.value.length) return;
|
||||
elem._length = elem.value.length;
|
||||
|
||||
if (!isFirefox && !isOpera) {
|
||||
padding = parseInt(getStyle('paddingTop')) + parseInt(getStyle('paddingBottom'));
|
||||
};
|
||||
scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
|
||||
|
||||
elem.style.height = minHeight + 'px';
|
||||
if (elem.scrollHeight > minHeight) {
|
||||
if (maxHeight && elem.scrollHeight > maxHeight) {
|
||||
height = maxHeight - padding;
|
||||
style.overflowY = 'auto';
|
||||
} else {
|
||||
height = elem.scrollHeight - padding;
|
||||
style.overflowY = 'hidden';
|
||||
};
|
||||
style.height = height + extra + 'px';
|
||||
scrollTop += parseInt(style.height) - elem.currHeight;
|
||||
document.body.scrollTop = scrollTop;
|
||||
document.documentElement.scrollTop = scrollTop;
|
||||
elem.currHeight = parseInt(style.height);
|
||||
};
|
||||
};
|
||||
|
||||
addEvent('propertychange', change);
|
||||
addEvent('input', change);
|
||||
addEvent('focus', change);
|
||||
change();
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
var autoTextarea2 = function (elem,elem2, extra, maxHeight) {
|
||||
extra = extra || 0;
|
||||
var isFirefox = !!document.getBoxObjectFor || 'mozInnerScreenX' in window,
|
||||
isOpera = !!window.opera && !!window.opera.toString().indexOf('Opera'),
|
||||
addEvent = function (element, type, callback) {
|
||||
element.addEventListener ?
|
||||
element.addEventListener(type, callback, false) :
|
||||
element.attachEvent('on' + type, callback);
|
||||
},
|
||||
getFirstStyle = elem.currentStyle ? function (name) {
|
||||
var val = elem.currentStyle[name];
|
||||
|
||||
if (name === 'height' && val.search(/px/i) !== 1) {
|
||||
var rect = elem.getBoundingClientRect();
|
||||
return rect.bottom - rect.top -
|
||||
parseFloat(getFirstStyle('paddingTop')) -
|
||||
parseFloat(getFirstStyle('paddingBottom')) + 'px';
|
||||
};
|
||||
|
||||
return val;
|
||||
} : function (name) {
|
||||
return getComputedStyle(elem, null)[name];
|
||||
},
|
||||
minHeight = parseFloat(getFirstStyle('height'));
|
||||
|
||||
elem.style.resize = 'none';
|
||||
elem2.style.resize = 'none';
|
||||
var change = function () {
|
||||
var scrollTop, height,
|
||||
padding = 0,
|
||||
style = elem.style,
|
||||
style2 = elem2.style;
|
||||
|
||||
|
||||
if (elem._length === elem.value.length) return;
|
||||
elem._length = elem.value.length;
|
||||
elem2._length = elem._length;
|
||||
if (!isFirefox && !isOpera) {
|
||||
padding = parseInt(getFirstStyle('paddingTop')) + parseInt(getFirstStyle('paddingBottom'));
|
||||
};
|
||||
scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
|
||||
|
||||
elem.style.height = minHeight + 'px';
|
||||
elem2.style.height = minHeight + 'px';
|
||||
if (elem.scrollHeight > minHeight) {
|
||||
if (maxHeight && elem.scrollHeight > maxHeight) {
|
||||
height = maxHeight - padding;
|
||||
style.overflowY = 'auto';
|
||||
style2.overflowY = 'auto';
|
||||
} else {
|
||||
height = elem.scrollHeight - padding;
|
||||
};
|
||||
style.height = height + extra + 'px';
|
||||
style2.height = height + extra + 'px';
|
||||
scrollTop += parseInt(style.height) - elem.currHeight;
|
||||
document.body.scrollTop = scrollTop;
|
||||
document.documentElement.scrollTop = scrollTop;
|
||||
elem.currHeight = parseInt(style.height);
|
||||
};
|
||||
if (elem2.scrollHeight > minHeight) {
|
||||
if (maxHeight && elem2.scrollHeight > maxHeight) {
|
||||
height = maxHeight - padding;
|
||||
style.overflowY = 'auto';
|
||||
style2.overflowY = 'auto';
|
||||
} else {
|
||||
height = elem2.scrollHeight - padding;
|
||||
};
|
||||
style.height = height + extra + 'px';
|
||||
style2.height = height + extra + 'px';
|
||||
scrollTop += parseInt(style2.height) - elem2.currHeight;
|
||||
document.body.scrollTop = scrollTop;
|
||||
document.documentElement.scrollTop = scrollTop;
|
||||
elem2.currHeight = parseInt(style2.height);
|
||||
};
|
||||
};
|
||||
|
||||
addEvent(elem, 'propertychange', change);
|
||||
addEvent(elem, 'input', change);
|
||||
addEvent(elem, 'focus', change);
|
||||
addEvent(elem2, 'propertychange', change);
|
||||
addEvent(elem2, 'input', change);
|
||||
addEvent(elem2, 'focus', change);
|
||||
change();
|
||||
};
|
||||
|
||||
//课程大纲选择请求,第二个参数是可选的,判断当前页面是大纲显示页面还是 课程首页
|
||||
function course_outline(id){
|
||||
|
|
Loading…
Reference in New Issue