如何从javascript中的焦点模糊事件获取元素值

ko子

我想知道如何从在焦点模糊事件中触发的元素(使用click事件)获取价值。我创建类似于jQuery datepicker的图标选择器。这里是代码,但是当我单击图标时,日期选择器元素隐藏而没有给出值。

PHP代码

<input id="contentIcon" class="form-control" type="text" name="content_icon" placeholder="pilih icon"/>
<div id="iconPicker" class="iconpicker dropdown-menu">
    <div class="iconpicker-wrapper">
        <table class="dt-icons">
        <?php
        foreach (array_chunk($icons, 5, true) as $icon_cunk) {
            echo '<tr>';
            foreach($icon_cunk as $key => $ico) {
                echo '<td data-value="'. $key .'"><i class="' . $key .'"></i></td>';
            }
            echo '</tr>';
        }
        ?>
        </table>
    </div>
</div>

Java脚本

$("#contentIcon").keypress(function (e) {
    e.preventDefault();
});

$(document).on('click', '#iconPicker table.dt-icons td', function () {
    $('#contentIcon').empty();
    var _dtself = $(this);
    document.getElementById("contentIcon").value = _dtself.data('value');
});

$('#contentIcon').focus(function() {
    $('#iconPicker').show();            
}).blur(function() {
    $('#iconPicker').hide();
});

更新

#iconPicker是一个隐藏的(显示:无)元素,用于选择图标。当用户将焦点放在#contentIcon输入字段时将显示它,并在触发模糊事件时将其隐藏起来。如果我删除$('#iconPicker').hide();blur,甚至处理部分,然后(我格式化这段代码,感谢@Reddy)

$(document).on('click', '#iconPicker table.dt-icons td', function () {
    $("#contentIcon").val($(this).data('value'));
});

可以触发并将值放置到#contentIcon输入字段中。但是,#iconPicker没有隐藏回来。如果我$('#iconPicker').hide();click事件处理程序中使用#iconPicker如果用户未选择图标,该图标将不会隐藏。

更新

这里是示例jsfiddle.net

ko子

我通过实现@CMS的答案来解决这个问题经过一些修改后的代码。

PHP的

<input id="contentIcon" class="form-control" type="text" name="content_icon" placeholder="pilih icon"/>
<div id="iconPicker" class="iconpicker dropdown-menu">
    <div class="iconpicker-wrapper">
        <table class="dt-icons">
            <?php
            $a = 0;
            foreach (array_chunk($icons, 5, true) as $icon_cunk) {
                echo '<tr>';
                foreach($icon_cunk as $key => $ico) {
                    if ($a == 0) {
                        echo '<td><a class="action-placement choosed-icon" data-value="'. $key .'"><i class="icon-placement ' . $key .'"></i></a></td>';
                    }else {
                        echo '<td><a class="action-placement" data-value="'. $key .'"><i class="icon-placement ' . $key .'"></i></a></td>';
                    }
                    $a++;
                }
                echo '</tr>';
            }
            ?>
        </table>
    </div>
</div>

Javascript的

$(document).on('keypress keydown', '#contentIcon', function (e) {
    e.preventDefault();
});

document.onclick = function (e) {
    e = e || window.event;
    var element = e.target || e.srcElement;

    if (element.id !== "contentIcon" && element.tagName !== "A" && element.className !== "action-placement" 
            && element.tagName !== "I" && element.className !== "icon-placement") {
        $('#iconPicker').hide();
    }
};

$(document).on('click', '#iconPicker table.dt-icons td a', function () {
    $(".choosed-icon").removeClass("choosed-icon");
    $(this).attr("class", "choosed-icon");

    $("#contentIcon").val($(this).data('value'));
});

$('#contentIcon').on('click', function () {
    $('#iconPicker').show();
    $('#iconPicker').focus();
});

这里是演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在模糊/焦点事件中,如果下一个焦点位于同一父元素中,如何使模糊不触发?

如何获取哪个元素导致div的模糊事件

当发生“模糊”事件时,我如何找出哪个元素焦点去了*?

如何使用A框架元素中的javascript获取点击事件

当文本字段在 Flutter 中退出焦点(模糊)时,如何捕获事件?

如何在焦点事件中在元素下方动态添加跨度?

如何在AngularJs中删除单击事件的元素焦点

在焦点/模糊事件中对对象进行分组

如何在自动完成组件中的焦点和模糊上显示不同的值

如何在WPF中获取具有焦点的元素名称

如何在javascript中获取HTML元素的样式值?

如何在javascript中获取HTML元素的值?

如何根据javascript中包含的值获取元素计数

如何获取JavaScript中某些标签的元素值?

如何在 li 元素 JavaScript 中获取标签的值

如何将焦点设置在 Javascript 中的列表元素上?

如何在 Javascript 中更改 HTML 输入元素的焦点

如何使用javascript获取primefaces元素的值

从Javascript中的值获取div元素的填充

如何使用jQuery获取焦点元素?

如何在jQuery中触发模糊事件

javascript模糊焦点无限循环

如何从javascript中的子元素获取主父节点元素的属性值?

在模糊/焦点事件上使用$ validators

如何在文本框模糊事件上检查递归数组结构中的重复值?

获取焦点变化的焦点元素

如何从列表的未来中获取元素/值

如何从列表元素中获取单个值

如何在angularjs中获取slickgrid的.editor-text的焦点事件