Javascript 什么会在单击时不断擦除文本输入值?

Javascript 什么会在单击时不断擦除文本输入值?,javascript,jquery,html,text,focus,Javascript,Jquery,Html,Text,Focus,我意识到我几乎是在复制一个excel表格;在插件中,预期的行为是: 单击时,其中包含值的将替换为具有相同值的,因此可以编辑。它可以工作,但问题是单击新创建的文本输入时,该值被重置或擦除为“” 我不知道这是怎么回事,我试过事件监听器,我试过了。取消绑定焦点,点击,点击,点击,点击焦点,因为重新点击文本框会触发一些删除它的东西。我使用了F12事件监听器并介入了所有内容,但我认为这可能是jquery在默认情况下自己所做的事情,但我想知道是否有人知道是什么导致了这种行为 $( "td" ).click(

我意识到我几乎是在复制一个excel表格;在插件中,预期的行为是: 单击时,其中包含值的将替换为具有相同值的,因此可以编辑。它可以工作,但问题是单击新创建的文本输入时,该值被重置或擦除为“”

我不知道这是怎么回事,我试过事件监听器,我试过了。取消绑定焦点,点击,点击,点击,点击焦点,因为重新点击文本框会触发一些删除它的东西。我使用了F12事件监听器并介入了所有内容,但我认为这可能是jquery在默认情况下自己所做的事情,但我想知道是否有人知道是什么导致了这种行为

$( "td" ).click(function(event)
{   
    var value = $( this ).text(); // gets the text inside section inside the td
    var column = $( this ).get( 0 ).id; //gets id="" of the td that is how I indentify columns
    var parent = $( this ).parent().get( 0 ).id; //gets the id of the row <tr id="x"><td id=">

    if( column == "a" || column == "b" )
    {
        return;
    } 
    else if ( column == "d" || column == "c" )
    {
        $( this ).children().replaceWith( '<input type=email value=' + value + '>' );
        $( this ).children().focus();
    }
    else
    {
        $( this ).children().replaceWith( '<input type=text value="' + value + '">' );
        $( this ).children().focus();           
    }

    $( this ).children().focusout(function(event){
        var new_value = $( this ).val();
        $( this ).parent().addClass( "edited" );
        $( this ).replaceWith( '<section>' + new_value + '</section>' );
});
$(“td”)。单击(函数(事件)
{   
var value=$(this).text();//获取td中节内的文本
var column=$(this.get(0.id);//获取td的id=“”,这就是我识别列的方式

var parent=$(this).parent().get(0).id;//获取要用值为{文本}的输入替换单元格的行的id/ 因此.text()现在将不返回任何内容

例如:

html:
<table>
<td id="only_text"><p>some text</p></td>
<td id='input_text'><input type="text" value="some text 2"/></td>
</table>

js:
$(function(){
    console.log($('#only_text').text());
    console.log($('#input_text').text() +'');
})
html:
一些文本

js: $(函数(){ console.log($('#仅_text').text(); console.log($('#input_text').text()+''); })

你可以在这个提琴中看到这个例子:(打开你的控制台并运行)

你能提供HTML来配合JavaScript代码吗?或者在jsfiddle.net中放一个例子,你可以看到这个行为,而且当选择光标区域时,它会在空格处停止,我注意到,你对此有什么想法吗?没错,没错……所以每次新的点击都会触发点击,因为它在(obv)中。那么我该怎么解决这个问题呢?我对js不熟悉,所以我习惯于以线性方式编写代码并立即运行。因此,我从来没有想到在整个功能未完成的情况下会触发另一个或同一个td(所以noobish)。你可以点击查看子项,看看它是否为输入,如果是,请执行其他操作(即,不做任何事情,从函数返回)…解决方案取决于您。您也可以在离开输入焦点时将输入更改回文本,这将为单元格提供一个很好的小生命周期-它将只是一个暂时的输入,在被编辑时