Открыть Select с помощью Javascript/jQuery?

filepaths = ['data/d1.csv', 'data/d2.csv','data/d3.csv','data/d4.csv']
df = pd.concat(map(pd.read_csv, filepaths))
27
задан Newbie 12 January 2010 в 11:28
поделиться

6 ответов

Хорошо, я нашел другой способ решить эту проблему. Вот исправление:

Пожалуйста, дайте мне отзыв! Я горжусь собой ;)

$(document).ready(function() {
    if (jQuery.browser.msie) {
            select_init();
    }
});


function select_init () {
    var selects = $('select');
    for (var i = 0; i < selects.length; i++) {
        _resizeselect.init(selects[i]);
    }
}


var _resizeselect = {
    obj : new Array(),
    init : function (el) {
        this.obj[el] = new resizeselect (el);
    }
}

function resizeselect (el) {

    this.el = el;
    this.p = el.parentNode;
    this.ht = el.parentNode.offsetHeight;
    var obj = this;
    this.set = false;

    el.onmousedown = function () {
        obj.set_select("mousedown");
    }
    el.onblur = function () {
        obj.reset_select("blur");
    }
    el.onchange = function () {
        obj.reset_select("change");
    }

}

resizeselect.prototype.set_select = function (str) {

    if (this.set) {
        this.set = false;
        return;
    }

    this.el.style.width = "auto";
    this.el.style.position = "absolute";
    this.p.style.height = this.ht + "px";
    this.p.style.zIndex = 100;
    this.set = true;
    this.el.focus();
}

resizeselect.prototype.reset_select = function (str) {
    this.el.style.width = "";
    this.el.style.position = "";
    this.p.style.height = "";
    this.p.style.zIndex = 1;
    this.set = false;
    window.focus();
}
0
ответ дан 28 November 2019 в 05:52
поделиться

вы не можете открыть список выбора, но вы можете сделать это, изменив размер этого списка при щелчке или любом другом желаемом событии

        $("#drpdwn").mousedown(bodyevent);
        function bodyevent()
        {
            console.log("size changed");
            $(this).attr('size',3);
        }
        $("#drpdwn").focus(function()
        {
            //alert("txt  clicked from ");
            var $el = $("#drpdwn");
            var offset = $el.offset();
            var event = jQuery.Event( "mousedown", {
                which: 1,
                pageX: offset.left,
                pageY: offset.top
            });
            $el.trigger(event);
        });
0
ответ дан Vishal 15 October 2019 в 06:34
поделиться

Вы можете просто сохранить его как последовательность в CHAR Я полагаю, что

-121--2386022-

Необходимо изменить цвет выделять списка при использовании стилей

 <style name="Widget.AbsListView">
        <item name="android:listSelector">@drawable/my_selector</item>
 </style>

или можно задать один и тот же атрибут в коде my_selector состояние - найдите примеры в каталоге SDK:

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_window_focused="false"
        android:drawable="@color/transparent" />

    <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
    <item android:state_focused="true" android:state_enabled="false"
        android:state_pressed="true"
        android:drawable="@drawable/list_selector_background_disabled" />
    <item android:state_focused="true" android:state_enabled="false"
        android:drawable="@drawable/list_selector_background_disabled" />

    <item android:state_focused="true" android:state_pressed="true"
        android:drawable="@drawable/list_selector_background_transition" />
    <item android:state_focused="false" android:state_pressed="true"
        android:drawable="@drawable/list_selector_background_transition" />

    <item android:state_focused="true"
        android:drawable="@drawable/list_selector_background_focus" />

</selector>
-121--3808495-

Я думаю, что вам нужно вернуть значение true от обработчиков событий (щелчок, размытие и т.д.), поэтому после выполнения обработчика браузер продолжает распространять событие и открывать выбор.

Она аналогична ссылкам href, если они имеют обработчик onclick и обработчик возвращает false, ссылка не соблюдается (браузер останавливает событие после выполнения обработчика).

EDIT: На основании вашего комментария и ответа, кажется, что ваш обработчик получает первый шанс выполнить только после того, как браузер решит открыть окно.
Я предлагаю попробовать обработчик событий focus , он может получить возможность запустить раньше, чем обработчик click , и, возможно, до того, как браузер фактически откроет окно. Это также более согласованно (относится как к навигации с помощью мыши, так и клавиатуры).

1
ответ дан 28 November 2019 в 05:52
поделиться

Вместо того, чтобы использовать , нажмите , вы можете использовать обработчик Mousedown для захвата события Mousedown . Mousedown Уголки перед Нажмите , чтобы вы могли позвонить StopPropogation , чтобы сломать очередь событий.

6
ответ дан 28 November 2019 в 05:52
поделиться

Я предпочитаю устанавливать мой CSS в CSS-файл, а затем "addClass", но даже в этом случае ваш код (часть)

   $('select').blur(function(){ 
        $(this).css({ 
            'position' : 'relative', 
            'width' : original_width 
        }); 
    }); 

    $('select').blur(function(){ 
        $(this).css({ 
            'position' : 'relative', 
            'width' : original_width 
        }); 
    }); 

кажется дубликатом

Я бы сделал это:

$('select').blur().css({ 
        'position' : 'relative', 
        'width' : original_width 
}); 

Не уверен, что вам действительно нужна функция .blur() здесь, что с событием .change() (попробуйте ее вытащить, посмотрите, не решает ли она вашу проблему...Я часто использую select на IE и, похоже, у меня нет проблемы.

0
ответ дан 28 November 2019 в 05:52
поделиться

Прежде всего, я чувствую болью этого ограничения в IE - Bleh! Просто думал, что я также поделился этим, как кажется, работает для меня. Я взял почти такой же подход, но на каждого выбора элемента. В моем случае я знаю, какие списки могут иметь длинные данные.

Вместо того, чтобы сделать абсолютный элемент выбора, я сохранил их встроенным и обернутым их в Div с скрытым переполнением, поскольку внешний вид необходим, необходимый, также применительно это относится только к этому «взломать», если оно то есть и расширенная ширина больше, чем текущая ширина.

Чтобы использовать это для всех полевых ящиков, которые вы можете использовать что-то вроде:

$("select").each(function(){ 
        $(this).IELongDropDown(); 
     });

или, очевидно, на базах на элемент по ID. Вот плагин jQuery:

(function($) {
    $.fn.IELongDropDown = function(cln) {
        if (jQuery.browser.msie) { //only IE has problems with long select boxes
            var el = this;
            var previousWidth = el.width();
            var divWrapper = "<div style='padding:0;margin:0;overflow:hidden;width:"+ previousWidth +"px'></div>";
            el.wrap(divWrapper);
            var newWidth = el.width("auto").width();
            el.width(previousWidth);
            if(newWidth > previousWidth) {
                el.bind("mousedown", function(){ return el.width("auto").focus(); }); 
                el.bind("blur", function(){ return el.width(previousWidth); });
                el.bind("change", function(){ return el.width(previousWidth); });
            }
        }
        return this;
    };
})(jQuery);

Надеюсь, это поможет кому-то

1
ответ дан 28 November 2019 в 05:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: