with - selectmenu() jquery




val() не вызывает change() в jQuery (5)

Вам нужно связать метод следующим образом:

$('#input').val('test').change();

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

Если вы введете что-то в текстовые поля и щелкните в другом месте, произойдет change . Однако, если вы нажмете кнопку, значение текстового поля будет изменено, но change не будет срабатывать. Зачем?


Вы можете очень легко переопределить функцию val чтобы вызвать изменение, заменив его прокси-сервером на исходную функцию val .

просто добавьте этот код где-нибудь в свой документ (после загрузки jQuery)

(function($){
    var originalVal = $.fn.val;
    $.fn.val = function(){
        var result =originalVal.apply(this,arguments);
        if(arguments.length>0)
            $(this).change(); // OR with custom event $(this).trigger('value-changed');
        return result;
    };
})(jQuery);

Рабочий пример: here

(Обратите внимание, что это всегда вызывает change при val(new_val) даже если значение фактически не изменилось.)

Если вы хотите активировать изменение ТОЛЬКО, когда значение действительно изменилось, используйте его:

//This will trigger "change" event when "val(new_val)" called 
//with value different than the current one
(function($){
    var originalVal = $.fn.val;
    $.fn.val = function(){
        var prev;
        if(arguments.length>0){
            prev = originalVal.apply(this,[]);
        }
        var result =originalVal.apply(this,arguments);
        if(arguments.length>0 && prev!=originalVal.apply(this,[]))
            $(this).change();  // OR with custom event $(this).trigger('value-changed')
        return result;
    };
})(jQuery);

Пример для примера: http://jsfiddle.net/5fSmx/1/


Из превосходного предложения redsquare это работает красиво:

$.fn.changeVal = function (v) {
    return this.val(v).trigger("change");
}

$("#my-input").changeVal("Tyrannosaurus Rex");

Нет, вам может потребоваться запустить его вручную после установки значения:

$('#mytext').change();

или же:

$('#mytext').trigger('change');

onchange только срабатывает, когда пользователь вводит во вход, а затем вход теряет фокус.

Вы можете вручную вызвать событие onchange используя после установки значения:

$("#mytext").change(); // someObject.onchange(); in standard JS

Кроме того, вы можете trigger событие, используя:

$("#mytext").trigger("change");






triggers