jquery下拉列表称为“其他”可编辑到位

时间:2012-05-08 09:32:49

标签: jquery drop-down-menu

我正在尝试创建一个下拉菜单“satutation”,其他选项可以编辑。 用户可以选择下拉列表中的所有选项,但如果不匹配,他可以选择“其他”键入他想要的内容。 我在演示中放了一些东西,但是我很困惑。

http://jsfiddle.net/Rjqy5/57/

title -> this will change once selected the other
Mr
Mrs
Miss
Ms
Other -> this will be editable. 

1 个答案:

答案 0 :(得分:0)

   $(document).ready(function () {
            $('.dropdown').live('mouseenter', function () {
                $('.sublinks').stop(false, true).hide();

                var submenu = $(this).parent().next();

                submenu.css({
                    position: 'absolute',
                    top: $(this).offset().top + $(this).height() + 'px',
                    left: $(this).offset().left + 'px',
                    zIndex: 1000
                });

                submenu.stop().slideDown(300);

                submenu.mouseleave(function () {
                    $(this).slideUp(300);

                    $('a#other').focus(function () {
                        $('#change').blur();
                    });
                });
            });

            $('#tbOthers').live('keypress focusout', function (e) {
                var textTitle = $.trim($(this).val());
                if (e.type === 'keypress') {
                    if ((e.keyCode ? e.keyCode : e.which) === 13) {
                        if (textTitle.length === 0) {
                            $(this).replaceWith('<a href="#" class="dropdown" id="change">Title</a>');
                        }
                        else {
                            $(this).replaceWith('<a href="#" class="dropdown" id="change">' + textTitle + '</a>');
                        }
                    }
                } else if (e.type === 'focusout') {
                    if (textTitle.length === 0) {
                        $(this).replaceWith('<a href="#" class="dropdown" id="change">Title</a>');
                    }
                    else {
                        $(this).replaceWith('<a href="#" class="dropdown" id="change">' + textTitle + '</a>');
                    }
                }
            });

            $('#mainLink').find('.sublinks a').live('click', function (e) {
                var objChange = $('#mainLink').find('#change');
                if ($(this).attr('id') === 'other') {
                    objChange.parent().append($('<input />', { 'id': 'tbOthers', 'type': 'text' }));
                    objChange.remove();
                    alert('dd');
                }
                else {
                    objChange.text($(this).text());
                }
            });

        });