У меня есть событие oninput в текстовом поле, чтобы проверить высоту и изменить ее размер. Теперь мне нужно иногда изменять значение. Я делаю это только путем редактирования val() в jQuery, но это не вызывает событие oninput. Можно ли каким-либо способом запускать событие oninput с помощью jQuery?
Событие Fire oninput с jQuery
Ответ 1
oninput пока еще не работает в JQuery.
Вы можете видеть сообщения об этом здесь:
http://forum.jquery.com/topic/html5-oninput-event
http://bugs.jquery.com/ticket/9121
В принципе, общий консенсус в том, что они еще этого не хотят.
Но нет, изменение val() напрямую не приведет к запуску html5 oninput, поскольку в спецификации указано, что пользователь в пользовательском интерфейсе изменяет значение ввода.
Edit:
Однако кто-то сделал плагин для людей, которые хотят использовать только события HTML5: https://github.com/dodo/jquery-inputevent
Ответ 2
Вы можете просто вызвать его, например:
$("input")[0].oninput = function () {
alert("hello");
};
$("input")[0].oninput();
... но, как указывает @Sammaye, jQuery не имеет явного обработчика oninput, поэтому вам придется использовать POJS.
Ответ 3
Это слишком поздно, но для справок в будущем существует метод .trigger.
$("#testArea").on("input", function(e) {
$("#outputArea").text( $(e.target).val() )
});
$("#testArea").val("This is a test");
$("#testArea").trigger("input");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input id="testArea" type="text" />
<div id="outputArea"></div>
Ответ 4
Вы можете привязываться к вводу и изменению:
ввод будет запущен при вводе пользователя
change будет срабатывать при изменениях() и в val (""), но после некоторых изменений
$("#textarea").bind("input change", function() {
alert("change happend");
});
...
после привязки к change вы можете назвать его вручную при каждом присвоении val (""):
$("#textarea").val("text").change();
или вы можете перезаписать метод jQuery val ( "), чтобы вызвать change для каждого вызова пользователя val (" "):
(function ($) { var fnVal = $.fn.val;
$.fn.val = function(value) {
if (typeof value == 'undefined') {
return fnVal.call(this);
}
var result = fnVal.call(this, value);
$.fn.change.call(this); // calls change()
return result;
};
})(jQuery);
Ответ 5
Попробуйте использовать "keypress" или "keydown".
Пример 1:
$("#textarea").keypress(function(){
alert($("#textarea").val());
});
Пример 2:
$("#textarea").keydown(function(){
alert($("#textarea").val());
});
Ответ 6
нажмите RUN CODE SNIPPET для просмотра результатов
Я искал лучший пример, чтобы присоединиться к диапазону ввода к входному значению и поэтому
i изменил пример Fernando в плагине JQuery, так что:
для каждого
<input type="range" min="1" max="100" value="50" id="range1">
вы получите его ценность:
<input type="text" disabled id="value" class="range1" value="0">
так что для любого родительского диапазона id = "range1" существует дочерний id = "value" class= "range1"
<!-- <script src="../js/jquery.js"></script> -->
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
1<input type="range" min="1" max="100" value="50" id="range1"><input type="text" disabled id="value" class="range1" value="0"><br>
2<input type="range" min="1" max="100" value="50" id="range2"><input type="text" disabled id="value" class="range2" value="0"><br>
3<input type="range" min="1" max="100" value="50" id="range3"><input type="text" disabled id="value" class="range3" value="0"><br>
4<input type="range" min="1" max="100" value="50" id="range4"><input type="text" disabled id="value" class="range4" value="0"><br>
...<br>
n<input type="range" min="1" max="100" value="50" id="rangen"><input type="text" disabled id="value" class="rangen" value="0"><br>
<script type="text/javascript">
<!--
$(document).ready(function() {
$('input').on("input",function(){
$('input').each(function(index) {
//console.log('1 '+index + ': ' + $(this).text()+',id='+$(this).attr('id'));
if($(this).attr('id')=='value'){
//console.log('2 class='+$(this).attr('class'));
var obj=$('input#'+$(this).attr('class') );
var hisvalue=$(this);
//console.log('3 parent`s value='+obj.val() );
obj.on("input",function(){
hisvalue.val(obj.val());
});
}
});
});
$('input').trigger("input");
});
//-->
</script>