Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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 在元素外部单击时重置输入字段_Javascript_Jquery_Input_Reset - Fatal编程技术网

Javascript 在元素外部单击时重置输入字段

Javascript 在元素外部单击时重置输入字段,javascript,jquery,input,reset,Javascript,Jquery,Input,Reset,我有以下代码支持内联编辑 $('.edit_td').click(function() { resetEditedCells(); $(this).addClass('active').html('<input type="text" value="' + $(this).html() + '">'); }); function resetEditedCells() { $('.edit_td.active').html(function() {

我有以下代码支持内联编辑

$('.edit_td').click(function() {
    resetEditedCells(); 
    $(this).addClass('active').html('<input type="text" value="' + $(this).html() + '">');
});

function resetEditedCells() {
        $('.edit_td.active').html(function() {
        return $(this).find('input').val();
    });
}

.blur()不会被触发。有人吗?

您需要使用单击事件而不是模糊:

$(document).click(function() {
 if($('.edit_td').hasClass('active')) {
     $('.active').remove();
 } else {
     alert("false");
}});
同时将td点击事件修改为停止播放:

$('.edit_td').click(function(e) {
 e.stopPropagation();
 resetEditedCells(); 
 $(this).addClass('active').html('<input type="text" value="' + $(this).html() + '">');
});
$('.edit_td')。单击(函数(e){
e、 停止传播();
resetEditedCells();
$(this.addClass('active').html(“”);
});

尝试类似的方法来替换现有的代码

$(document).on('click', function(e) {
    var edit_td = $(e.target).closest('.edit_td');

    if ( edit_td.length > 0 ) {

        resetEditedCells(); 
        edit_td.addClass('active')
               .html('<input type="text" value="' + edit_td.html() + '">');

    }else{

        $('.edit_td.active').removeClass('active').empty();

    }
});
$(文档).on('click',函数(e){
var edit_td=$(e.target).closest('.edit_td');
如果(编辑长度>0){
resetEditedCells();
编辑添加类(“活动”)
.html(“”);
}否则{
$('.edit_td.active').removeClass('active').empty();
}
});

这将使用
closest()
来确定单击是来自TD内部还是外部。

尝试此js代码,其中edit\u TD类应用于每个TD,活动类位于活动TD上,模糊函数绑定到应用了“edit\u TD”和“active”类的TD

$('.edit_td.active').on('blur', function(e) {
       $('.active').remove();
    });

您知道您正在模糊文档本身吗?不是编辑字段…可能您正在查找
$(this).removeClass('active').empty().text(原始文本)尝试
$('input')。打开('blur'
这不起作用。当我单击td时,会触发对文档的单击,td不会转换为输入字段。当你第一次单击td时,td应该转换为输入字段。当你在表外单击时,输入字段应该重置为td。最好直接在字段上绑定模糊事件。如果您绑定到文档,则该函数将在单击网页时被调用。这将使用不必要的处理能力。@user500468:您是否在td click事件中添加了StopRopagation???@MilindantWar:谢谢。但在删除输入字段之前,我如何捕获其值?编辑:没关系。我解决了它:)@MilindantWar:当我删除类时,如何恢复td及其值?当我在元素外部单击时,td内的内容将被删除。我通常就是这样做的。在代码中添加一些解释,以便有助于OP@CasperSky补充解释。
$('.edit_td.active').on('blur', function(e) {
       $('.active').remove();
    });