Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要JavaScript函数才能在textarea更改上运行_Javascript_Textarea - Fatal编程技术网

需要JavaScript函数才能在textarea更改上运行

需要JavaScript函数才能在textarea更改上运行,javascript,textarea,Javascript,Textarea,我有一个,一旦我点击一个按钮,它就会变成一个文本区。这个很好用。我还有一个characterCounterEdit功能,它也可以工作。唯一的问题是,字符计数器只有在我单击文本区域中的光标时才起作用。我想在跳入editCommentToggle()后立即触发字符计数器函数 JavaScript: function editCommentToggle( id ) { theRow = document.getElementById("id"+id); //user = theRow.

我有一个
,一旦我点击一个按钮,它就会变成一个文本区。这个很好用。我还有一个characterCounterEdit功能,它也可以工作。唯一的问题是,字符计数器只有在我单击文本区域中的光标时才起作用。我想在跳入editCommentToggle()后立即触发字符计数器函数

JavaScript:

function editCommentToggle( id )
{
    theRow = document.getElementById("id"+id);
    //user = theRow.cells[0].innerHTML;
    //date = theRow.cells[1].innerHTML;
    com = theRow.cells[2].innerText ;


    idx = 2;
    maxlength = 250;

        // Comment field
        cell = theRow.cells[idx];
        while( cell.childNodes.length > 0 ) cell.removeChild(cell.childNodes[0]);

        spanTag = document.createElement("span"); 
        spanTag.innerHTML = "You have <strong><span id='commentsCounter'>"+maxlength+"</span></strong> characters left.<br/>"; 
        cell.appendChild(spanTag);
        element = document.createElement("textarea");
        element.id="commentsTextArea-"+id;
        element.rows="3";
        element.value = com;
        element.style.width = "400px";
        element.maxLength = "250";
        element.onfocus = element.onkeydown = element.onkeyup = function(){return characterCounterEdit('commentsCounter', maxlength, this);}; 
        cell.appendChild(element);

        $(function()
                {
                    setTimeout("syncCommentTableSizes()",0);    <%-- Run after HTC code --%>
                });

    // Actions field
    cell = theRow.cells[++idx];
    while( cell.childNodes.length > 0 ) cell.removeChild(cell.childNodes[0]);

    link = document.createElement("a");
    link.href = 'javascript:saveComment('+id+')';

    element = document.createElement( "img" );
    element.className = "smallicon edit"; // check if we need this changed
    element.src="../images/icon_save.gif";
    element.border="0";
    element.alt = "Save";

    link.appendChild( element );

    cell.appendChild(link);
    cell.appendChild( document.createTextNode("  ") );

    link = document.createElement("a");
    link.href = 'javascript:cancelCommentEdit('+id+')';

    element = document.createElement( "img" );
    element.className = "smallicon delete"; // check if we need this changed
    element.src="../images/icon_cancel.gif";
    element.border="0";
    element.alt = "Cancel";

    link.appendChild(element);
    cell.appendChild(link);
}



function characterCounterEdit(id, maxLen, inputElement)
{
    spanId = document.getElementById(id);

    if (spanId)
    {
        // Update the counter the user sees.
        var whatIsLeft = maxLen - inputElement.value.length;

        if ( whatIsLeft < 0 ) whatIsLeft = 0;
        spanId.innerText = whatIsLeft;
    }

    // Restrict user from entering more than the maxlen.
    if ( inputElement.value.length > maxLen )
    {
        inputElement.value = inputElement.value.substring( 0, maxLen );
    }
}
函数editCommentToggle(id)
{
theRow=document.getElementById(“id”+id);
//user=theRow.cells[0].innerHTML;
//date=theRow.cells[1].innerHTML;
com=theRow.cells[2].innerText;
idx=2;
最大长度=250;
//注释字段
cell=row.cells[idx];
而(cell.childNodes.length>0)cell.removeChild(cell.childNodes[0]);
span标签=document.createElement(“span”);
spanTag.innerHTML=“您还有“+maxlength+”个字符。
”; cell.appendChild(spanTag); 元素=document.createElement(“textarea”); element.id=“commentsTextArea-”+id; element.rows=“3”; element.value=com; element.style.width=“400px”; element.maxLength=“250”; element.onfocus=element.onkeydown=element.onkeyup=function(){return characterCounterEdit('commentsCenter',maxlength,this);}; 子单元(元素); $(函数() { setTimeout(“syncCommentTableSizes()”,0); }); //动作场 单元格=当前单元格[++idx]; 而(cell.childNodes.length>0)cell.removeChild(cell.childNodes[0]); link=document.createElement(“a”); link.href='javascript:saveComment('+id+'); 元素=document.createElement(“img”); element.className=“smallicon edit”;//检查是否需要更改此项 element.src=“../images/icon_save.gif”; element.border=“0”; element.alt=“保存”; link.appendChild(元素); 附加子单元(链接); cell.appendChild(document.createTextNode(“”); link=document.createElement(“a”); link.href='javascript:cancelCommentEdit('+id+'); 元素=document.createElement(“img”); element.className=“smallicon delete”;//检查是否需要更改此项 element.src=“../images/icon\u cancel.gif”; element.border=“0”; element.alt=“取消”; link.appendChild(元素); 附加子单元(链接); } 函数字符计数器编辑(id、maxLen、inputElement) { spanId=document.getElementById(id); 如果(spanId) { //更新用户看到的计数器。 var whatisleet=maxLen-inputElement.value.length; 如果(whatisleet<0)whatisleet=0; spanId.innerText=whatisleet; } //限制用户输入超过最大值的内容。 if(inputElement.value.length>maxLen) { inputElement.value=inputElement.value.substring(0,maxLen); } }
为什么不在
editCommentToggle()中调用所需的方法呢。你似乎暗示这是你想做的,但我不确定你为什么没有做

function editCommentToggle( id )
{
   //code to get the element here first as pointed out by a comment below.

   characterCounterEdit('commentsCounter', maxlength, element);

   .... rest of the function

}

好啊那就这么做吧。。。。你已经知道你想做什么了。。。为什么要问这里?@diEcho说真的???@Neal你比我更有知识。:)@那么,diEcho回答jQuery问题,不提“javascript”问题怎么样?>@diEcho-因为为简单的东西加载一个巨大的库通常是过分的。我正在这样做….
element.onfocus=element.onkeydown=element.onkeyup=function(){return characterCounterEdit('commentsCenter',maxlength,this);};子单元(元素)
那么你的意思是这个函数只激发onfocus而不是onkeydown或onkeyup?它只在我点击文本区域时激发…不是在我点击调用editCommentToggle的按钮时激发..它怎么能在调用editCommentToggle后立即激发?然后,与其把它放在onclick监听器上,不如把方法调用放在editCommentToggle内方法。我将编辑我的答案。您需要在创建
元素后传入它,而不是