如何在extjs文本字段选择器中获取更改事件

时间:2016-01-11 11:30:05

标签: javascript extjs picker

我想从Extjs选择器扩展扩展。我想当用户在选择器中键入文本时,调用一个函数。我使用change事件,它不起作用。

我想扩展像combobox这样的扩展名,当你输入文本时,它会过滤记录。

我该如何实施?

4 个答案:

答案 0 :(得分:0)

在您的扩展程序中重写onChange属性,如下所示:

onChange: function() {
            // Your logic
            console.log('Changed!');

            // Call parent method onChange(), if needed
            this.callParent();
}

我创造了一个简单的小提琴来说明它是如何运作的 - onChange() method fiddle

答案 1 :(得分:0)

为您的选择器添加“更改”侦听器(它可以是组合框,日期选择器等...)

以下是一个例子:

var comboName = new Ext.form.field.ComboBox({
  fieldLabel: 'Name',
  editable: true,
  listeners: {
    'change': function (this, newValue, oldValue) {
     DoSomething();
    }
  }
});

以前的代码每次更改值时都会调用DoSomething()函数。

答案 2 :(得分:0)

如果你扩展Ext.form.field.Picker课程,'更改'事件应该像这样处理:

Ext.define('Your.extended.ClassName', {
    extend: 'Ext.form.field.Picker',

    ...

    onChange: function(newVal, oldVal) {
        ....
        this.callParent(arguments);
    }

});

答案 3 :(得分:0)

试试这个

listeners: {
        change: {
            fn: 'myViewControllerFunction'
    }

您还可以参考viewcontroller中的一个函数(Extjs5 / 6)

<?php
$slide_img_array = array();
$slide_desc_array = array();
$slide_name_array = array();

while (!$sql_pres_select->eof()) {
    array_push($slide_img_array, $sql_pres_select->valueof('file_location'));
    array_push($slide_desc_array, $sql_pres_select->valueof('description'));
    array_push($slide_name_array, $sql_pres_select->valueof('slide_name'));
    $sql_pres_select->next();
}
?>
<script>

    var slide_no = 0;
    var slides = <?php echo json_encode($slide_img_array); ?>;
    var desc = <?php echo json_encode($slide_desc_array); ?>;
    var names = <?php echo json_encode($slide_name_array); ?>;

    function nextSlide() {
        if (slide_no < slides.length) {
            slide_no++;
            document.getElementById("display").src = slides[slide_no];
            document.getElementById("func_slide_desc").innerHTML = desc[slide_no];
            document.getElementById("func_slide_name").innerHTML = names[slide_no];

        }

    }
    function prevSlide() {
        if (slide_no > 0) {
            slide_no--;
            document.getElementById("display").src = slides[slide_no];
            document.getElementById("func_slide_desc").innerHTML = desc[slide_no];
            document.getElementById("func_slide_name").innerHTML = names[slide_no];
        }
    }

    function goToSlide(id) {
        slide_no = id;
        document.getElementById("display").src = slides[slide_no];
        document.getElementById("func_slide_desc").innerHTML = desc[slide_no];
        document.getElementById("func_slide_name").innerHTML = names[slide_no];
        document.getElementById('slide_index').innerHTML = slide_no;

    }
</script>

如果这不起作用,您应该向我们展示您的部分代码。