`
coolerbaosi
  • 浏览: 728854 次
文章分类
社区版块
存档分类
最新评论

td 转 input js代码

 
阅读更多

1.js 代码


var tbid = "#excel";//这里设置你的table 的id,其他都不用变
var tdclass="";
var inputfomate = "<input type='text'/>";
var pre = null;
var tdinputselection="";

function getSelectionStart(o) {
    if (o.createTextRange) {
        var r = document.selection.createRange().duplicate();
        r.moveEnd('character', o.value.length);
        if (r.text == '') return o.value.length
        return o.value.lastIndexOf(r.text);
    } else return o.selectionStart;
}
function getSelectedText() {
    if (window.getSelection) {
        return window.getSelection().toString();
    }
    else if (document.getSelection) {
        return document.getSelection();
    }
    else if (document.selection) {
        return document.selection.createRange().text;
    }
}
$(function () {
    $(tbid).click(function (e) {
        stopevent(e);
        var cur = e.target;
        if ($(cur).is("td" + tdclass)) {
            if (!$(cur).data("tov")) $(cur).data("tov", $(cur).text()+"");
            switchtdinput(cur);
        }
    });
    $(tbid).find("tr").each(function () {
        $(this).find("td" + tdclass).each(function (i) {
            $(this).data("i", i);
        });
    });
});

function switchtdinput(obj) {
    if (pre) doinpleave(pre);
    var width = $(obj).width() * 0.9;
    var objtxt=$.trim($(obj).text());
    $(obj).html($(inputfomate).val(objtxt).width(width));
    $(obj).width(width);    
    pre = $(obj).find('input').css("border", "1px solid red")[0];
    $(obj).find('input').trigger("focus").trigger("select");
    $(obj).find('input').click(function (event) {
        stopevent(event);
        return false;
    }).blur(function (event) {        
        inpleave(event, this);
    }).keypress(function (event) {
        if(event.keyCode == 13 || event.which == 13)
         return setpreornext(event, this);
    }).keyup(function (event) {
        if (event.keyCode != 13 || event.which != 13)
        return setpreornext(event, this);
    }).keydown(function (event) {       
        tdinputselection = getSelectedText();
        stopevent(event);
    });
}

function stopevent(event) {
    event.stopPropagation();
}

function inpleave(event, obj) {
    stopevent(event);
    doinpleave(obj);
}

function doinpleave(obj) {
    if (!obj) return;
    var val = $(obj).val()+"";
    var $par = $(obj).parent()[0];
    $($par).text(val);
    if ($($par).data("tov") && $($par).data("tov") != val) $($par).addClass("dataChanged");
    else if (!$($par).data("tov") && val) $($par).addClass("dataChanged");
    else $($par).removeClass("dataChanged");
    pre = null;
}

function setpreornext(event, objThis) {
    var count = -1;
    stopevent(event);
    var obj;
    if (event.keyCode == 40 || event.which == 40 || event.keyCode == 38 || event.which == 38 || event.keyCode == 13 || event.which == 13|| event.keyCode == 37 || event.which == 37|| event.keyCode == 39 || event.which == 39) {
       count = parseInt($(objThis).parent().data("i"));
        if (event.keyCode == 40 || event.which == 40) {
            obj = $(objThis).parent().parent().next("tr").find("td" + tdclass).get(count);
        } else if (event.keyCode == 38 || event.which == 38) {
            obj = $(objThis).parent().parent().prev("tr").find("td" + tdclass).get(count);
        } else if (event.keyCode == 13 || event.which == 13) {
            obj = $(objThis).parent().parent().find("td" + tdclass).get(count + 1);
        }
        else if (event.keyCode == 37 || event.which == 37) {          
            if($(objThis).val().length==0||getSelectionStart(objThis)==0&&(tdinputselection!=$(objThis).val())){
                obj = $(objThis).parent().parent().find("td" + tdclass).get(count - 1);
            }
        }
        else if (event.keyCode == 39 || event.which == 39) {
            if ($(objThis).val().length == 0 || getSelectionStart(objThis) == $(objThis).val().length && (tdinputselection != $(objThis).val()))
                obj = $(objThis).parent().parent().find("td" + tdclass).get(count + 1);
        }
        if (obj) {
            doinpleave(objThis);
            switchtdinput(obj);
        }
    }
    if (event.keyCode == 13 || event.which == 13) return false;
    else return true;

}

注意:在你自定义js之前必须加载jquery.js

<script type="text/javascript" src="${basePath}pages/excel/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="${basePath}pages/excel/js/readExcel.js"></script>

源码下载

分享到:
评论

相关推荐

    JS双击变input框批量修改内容

    双击空白或者文字变成input框修改内容: html代码 &lt;td class=center xss=removed&gt;{...js代码 //双击修改 function ShowElement(element,abc){ // console.log(abc); var list = abc; var me = element; var oldht

    【JavaScript源代码】JavaScript实现简单购物小表格.docx

    JavaScript实现简单购物小表格  本文实例为大家分享了JavaScript实现简单购物小表格的..."&gt; &lt;td&gt;&lt;input type="checkbox"class="all"/&gt;&lt;/td&gt; &lt;td style="text-align: center; width: 200px;"&gt;商品&lt;/td&gt; &lt;td style="c

    【JavaScript源代码】vue实现简易计算器功能.docx

     效果图一般般,样式随便写的,主要看功能以及实现方法 代码加解释 1、HTML部分 首先布局,把要做的样子写出来,为每一个按键绑定一个点击事件 &lt;div id="box"&gt; &lt;table&gt; &lt;tr&gt; &lt;td&gt;&lt;input type="button"value=...

    js(javascript)获取网页源码

    body, td, input, textarea { font-family:Arial; font-size:12px; } &lt;/style&gt; &lt;script type="text/javascript"&gt; //用于创建XMLHttpRequest对象 function createXmlHttp() { //根据window.XMLHttpRequest...

    动态控制Table的js代码

     &lt;td u00a0width=10%&gt; height u00a0border=1&gt;    &lt;td&gt;&lt;input type=button name=Submit3 value=最上 onClick=moveFirst()&gt;&lt;/td&gt;      &lt;td&gt;&lt;input type=button name=Submit value=向上 ...

    疯狂JS特效

    javascript特效,有:菜单特效、窗口特效、时间特效、图片特效、文字特效…… 例子:仿真计算器代码 &lt;style type="text/css"&gt; &lt;!-- body {font-family: helvetica} p {font-size: 12pt} .red {color: red} ...

    JS DOM 操作实现代码

    简单的表格: 代码如下: &lt;table&gt; &lt;tr&gt; &lt;td id=...结果为4 百思不得其解,阅读相关资料后,发现原来JS中,空格也是作为一个文本节点,而两个input元素后面都有空格 所以都作为一个文本节点,所以结果为4 删除空格后结果为2 为

    鼠标焦点离开文本框时验证的js代码

    利用js来验证文本框的值 代码如下: [removed] function onblurs(){ if(frm.name.value==””){ alert&#40;“请输入您的名字!”&#41;; }else if(frm.funny.value==””){ alert&#40;“爱好不得为空哦!”&#41;; } } ...

    网页播放器代码(javascript 播放器 控制)

    javascript 播放器 控制 发表:不详 阅读: 37 次 关键字:不详 字体:[大 中 小] 详细参数可查询MSDN http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmplay/mmp_sdk/settingsobject.asp &lt;!...

    html+js实现简单的计算器代码(加减乘除)

    html+js实现简单的计算器代码(加减乘除) &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta http-equiv=Content-Type content=text/html; charset=utf-8 /&gt; &lt;title&gt;&lt;/title&gt; &lt;/head&gt; &...

    js时间控件(WdatePicker.js)

    这里基于js技术,是一款很好用的js时间控件。例如时间为期一个月代码如下: 开始日期 &lt;td&gt; &lt;input type="text" name="*" onFocus="WdatePicker({maxDate:'%y-%M-%d %H:%m:%s',dateFmt:'yyyy-MM-dd HH:mm:ss'})" ...

    各种代码大全查询包括网页的等等

    &lt;INPUT CHECKED name=myselect onclick=javascript:this.form.myselectvalue.value=0; type=radio value=0&gt; &lt;SPAN class=f12&gt;&lt;FONT color=#0000cc style="FONT-SIZE: 12px"&gt;网页&lt;/FONT&gt;&lt;/SPAN&gt; &lt;INPUT name=...

    JS远程获取网页源代码实例

    代码如下: &lt;!... &lt;head&gt; &lt;... charset=utf-8″&gt; &lt;...远程网页源代码读取&lt;... /* 页面字体样式 */ body, td, input, textarea { font-family:Arial; font-size:12px; } &lt;/style&gt; &lt;script type

    JS判断时间段的实现代码

    废话不多说了,直接给大家贴代码了,具体代码如下所示: 交易时间开始:&lt;/th&gt; &lt;td&gt;&lt;input id=bcconDateBeginDate name=bcconDateBeginDate value=2016/06/12 00:00:00 class=easyui-datetimebox editable=false ...

    js实现一个简易计算器

    本文实例为大家分享了JS实现简易计算器的具体代码,供大家参考,具体内容如下 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;14th_test&lt;/title&gt; &lt;meta charset=gb2312&gt; &lt;/head&gt; &...

    教师档案管理系统源代码

    &lt;td width="202" height="84"&gt;("web_firstpage")%&gt;"&gt;("web_logo")%&gt;" alt="logo" name="logo" width="200" height="60" border="0" id="logo" /&gt;&lt;/a&gt;&lt;/td&gt; &lt;td width="665"&gt;&nbsp;&lt;/td&gt; &lt;td width="889" ...

    table点击表头排序

    // &lt;td _ext="js"&gt;Scroller.js&lt;/td&gt; // &lt;td align="center"&gt;2008/9/23&lt;/td&gt; // &lt;td align="right" _order="2560"&gt;2.5 K&lt;/td&gt; // &lt;td align="center"&gt;&lt;input type="checkbox"/&gt;&lt;/td&gt; // &lt;td align="center"&gt;...

    雅虎TAB效果代码 Javascript实现

    雅虎TAB效果代码 ; charset=gb2242"&gt; 魏金梁" /&gt; 魏金梁" /&gt; &lt;title&gt;nightjass 魏金梁 body {background: #fff;font-family: "Lucida Grande", Helvetica, Arial, sans-serif;font-size: 12px;} p {line-height:...

    js实现全选和全不选

    本文实例为大家分享了js实现全选和全不选的具体代码,供大家参考,具体内容如下 非常简洁的几行原生js实现全选和全不选,大神们可以在此基础上加上反选功能。 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;...

    用javascript删除当前行,添加行(示例代码)

    删除行 代码如下:[removed] function del(obj) { obj[removed][removed].removeNode(true); } [removed] &lt;body&gt;   &lt;td&gt;单元格1&lt;/td&gt; &lt;td&gt;&lt;input type=button value=”delete this row” ...

Global site tag (gtag.js) - Google Analytics