Tôi có một sự kiện oninput trên một vùng văn bản để kiểm tra chiều cao và thay đổi kích thước nó. Bây giờ tôi cần phải chỉnh sửa giá trị đôi khi. Tôi làm điều này chỉ bằng cách chỉnh sửa val() trong jQuery, nhưng điều đó không kích hoạt sự kiện oninput. Có cách nào để kích hoạt sự kiện oninput programatically với jQuery?Sự kiện oninput lửa với jQuery
Trả lời
đầu vào chưa thực sự trong JQuery.
Bạn có thể xem bài viết về nó ở đây:
http://forum.jquery.com/topic/html5-oninput-event
http://bugs.jquery.com/ticket/9121
Về cơ bản sự đồng thuận chung là họ không muốn nó được nêu ra.
Nhưng không, việc thay đổi val() trực tiếp sẽ không kích hoạt đầu vào html5 vì đặc điểm kỹ thuật của nó cho biết khi người dùng, trong giao diện người dùng, thay đổi giá trị của đầu vào.
Edit:
Tuy nhiên một số ai có vui lòng thực hiện một plugin cho những người muốn sử dụng HTML5 chỉ sự kiện: https://github.com/dodo/jquery-inputevent
Liên kết đến dự án của Andy đã chết. Có một ngã ba đang được phát triển tích cực [trên github] (https://github.com/dodo/jquery-inputevent). –
@JoeTaylor, bạn có thể chỉnh sửa câu trả lời để cập nhật liên kết đã chết bằng liên kết mới. Nhân tiện, tôi đã làm như vậy. –
Có thể điều này đúng khi câu hỏi được hỏi. Nhưng kể từ jQuery 1.0 có phương pháp kích hoạt. – Fernando
Bạn chỉ có thể gọi nó, ví dụ .:
$("input")[0].oninput = function() {
alert("hello");
};
$("input")[0].oninput();
... nhưng như @Sammaye chỉ ra, jQuery không có rõ ràng "oninput" xử lý, vì vậy bạn sẽ phải sử dụng POJS.
Bạn có thể liên kết với đầu vào và thay đổi:
đầu vào sẽ được kích hoạt tại đầu vào của người dùng
thay đổi sẽ được kích hoạt khi thay đổi() và t o val (" ") bài tập, nhưng sau khi một số thay đổi
$("#textarea").bind("input change", function() {
alert("change happend");
});
...
sau khi bạn binded đến thay đổi bạn có thể gọi nó là manualy trên mỗi val ("") công việc:
$("#textarea").val("text").change();
hoặc bạn có thể ghi đè lên jQuery val (" ") phương pháp để kích hoạt thay đổi trên mỗi val dùng ("") gọi:
(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);
Nó hơi trễ một chút, nhưng để tham khảo trong tương lai, có phương pháp .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>
Hãy thử với "bấm phím" hoặc "KeyDown".
Ví dụ 1:
$("#textarea").keypress(function(){
alert($("#textarea").val());
});
Ví dụ 2:
$("#textarea").keydown(function(){
alert($("#textarea").val());
});
đẩy RUN ĐOẠN MÃ cho thấy kết quả
tôi đã được tìm kiếm một ví dụ tốt hơn để tham gia vào một loạt các đầu vào với giá trị đầu vào và do đó, tôi đã sửa đổi ví dụ của Fernando trong một plugin JQuery, vì vậy: cho mỗi <input type="range" min="1" max="100" value="50" id="range1">
bạn sẽ có giá trị của mình: <input type="text" disabled id="value" class="range1" value="0">
như vậy là như thế nào cho bất kỳ phạm vi mẹ id = "RANGE1" có một id con = "giá trị" 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>
- 1. thiết oninput kiện với Javascript
- 2. jQuery: Lửa nhấp vào sự kiện trên một khoảng
- 3. sự kiện ondragstart với jQuery
- 4. Sự kiện thay đổi lửa theo cách thủ công
- 5. Jquery .Trên với sự kiện DoubleClick
- 6. Sự kiện chọn Jquery
- 7. Kích hoạt sự kiện thực sự với jQuery
- 8. Sự kiện cuộn jQuery
- 9. jQuery fadeIn sự kiện?
- 10. jQuery iframe load() sự kiện?
- 11. jQuery - Sự kiện thay đổi sự kiện cháy
- 12. Sự kiện video HTML5 jQuery
- 13. Unbind jQuery sự kiện ajaxSuccess
- 14. jQuery .trigger() nhiều sự kiện
- 15. jquery ghi đè sự kiện
- 16. Sự kiện thời gian jQuery
- 17. Sử dụng jQuery .live với sự kiện chuyển đổi
- 18. Trình nghe sự kiện chuyển tiếp CSS3 với jQuery
- 19. sự kiện bấm nút hình ảnh asp với JQuery Mobile
- 20. kích hoạt một sự kiện hover trì hoãn với Jquery
- 21. Cách thêm sự kiện nhấp vào iframe với JQuery
- 22. Thay đổi sự kiện được ưu tiên với JQuery
- 23. Nhấp chuột ràng buộc sự kiện với backbone.js & jQuery
- 24. Vấn đề với sự kiện nhấn nút trong jquery
- 25. Hủy bỏ các sự kiện với jquery hoặc javascript
- 26. Sự kiện match.target với đối tượng jQuery hiện có
- 27. jQuery Mobile - ràng buộc với sự kiện pageinit
- 28. Ủy quyền các sự kiện Hammer.js với jQuery
- 29. sự kiện nhấp vào liên kết jquery với nhiều nút
- 30. Làm cách nào để liên kết sự kiện với sessionStorage?
Trong tương lai vis itors: một đơn giản '.on ('input')' hoạt động. – hauzer
@hauzer bạn hoàn toàn đúng. Đây là [DEMO] (http://jsfiddle.net/yuvii/QU8Sd/1/) để chứng minh điều đó. thử nghiệm trên Chrome, FF & Opera (và tôi đoán sẽ không có vấn đề gì với các phiên bản IE hiện đại) – yuvi
Hoặc chỉ sử dụng JS đơn giản: 'element.dispatchEvent (sự kiện mới ('đầu vào'));' (IE9 +) – Nux