Eri*_*air 370 html jquery select input
change()当值设置时,事件处理程序中的逻辑不会运行val(),但它会在用户使用鼠标选择值时运行.为什么是这样?
<select id="single">
<option>Single</option>
<option>Single2</option>
</select>
<script>
$(function() {
$(":input#single").change(function() {
/* Logic here does not execute when val() is used */
});
});
$("#single").val("Single2");
</script>
Run Code Online (Sandbox Code Playgroud)
use*_*716 580
因为change事件需要用户发起的实际浏览器事件而不是通过javascript代码.
改为:
$("#single").val("Single2").trigger('change');
Run Code Online (Sandbox Code Playgroud)
要么
$("#single").val("Single2").change();
Run Code Online (Sandbox Code Playgroud)
Dav*_*mas 44
我相信您可以手动触发更改事件trigger():
$("#single").val("Single2").trigger('change');
Run Code Online (Sandbox Code Playgroud)
虽然它为什么不自动开火,但我不知道.
在val()之后添加这段代码似乎有效:
$(":input#single").trigger('change');
Run Code Online (Sandbox Code Playgroud)
据我所知,在API中.只有在用户单击选项时才会触发该事件.
对于选择框,复选框和单选按钮,当用户使用鼠标进行选择时会立即触发事件,但对于其他元素类型,事件将延迟,直到元素失去焦点.
为了方便起见,添加自定义函数并在您想要更改值时调用它也会触发更改
$.fn.valAndTrigger = function (element) {
return $(this).val(element).trigger('change');
}
Run Code Online (Sandbox Code Playgroud)
和
$("#sample").valAndTirgger("NewValue");
Run Code Online (Sandbox Code Playgroud)
或者,您可以覆盖val函数,以便在调用val时始终调用更改
(function ($) {
var originalVal = $.fn.val;
$.fn.val = function (value) {
this.trigger("change");
return originalVal.call(this, value);
};
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/r60bfkub/上的示例
| 归档时间: |
|
| 查看次数: |
235590 次 |
| 最近记录: |