当使用下拉框更改输入框的值时,我希望使用jquery或javascript来跟踪更改。
我给输入框一个firechange类,并尝试使用jQuerychange()事件,但事件根本不触发。
是否有一种方法来检查下拉框选择。
$('.fieldsWrapper').on('click', '.dlInput', function(e) {
// e.stopPropagation();
// load datalist into memory
var dl = "";
dl += "<div class='dlOption'>Red</div>";
dl += "<div class='dlOption'>Yellow</div>";
dl += "<div class='dlOption'>Green</div>";
$(".helper").html(dl);
loadDatalist(dl)
})
function loadDatalist(dl) {
// $("#helper").width( $("#dlInput").width() );
$(document).on("click", ".dlInput", function(e) {
e.stopPropagation();
// display list if it has value
var lv = $(".dlInput").val();
if (lv.length) {
var os = $(".dlInput").offset();
$("#orderTypes").attr("id", "orderTypesHide");
var activeElement = $(document.activeElement)
var helper = activeElement.next()
$(helper).show();
// $('#helper').show()
}
});
$(document).on("click", ".dlOption", function(e) {
e.stopPropagation();
$(this).parent().prev('.dlInput').val($(this).html()); //The parent class is the helper and the class before should be the Input box of the class dlInput
$(".helper").hide();
});
$(document).on("change", ".dlInput", function() {
if ($(this).val() === "") {
$("#orderTypesHide").attr("id", "orderTypes");
$(".helper").hide();
}
});
}
$('.fireChange').change(function(){
alert(`Input Event Fired`)
// addIndividualParts()
})<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class ="fieldsWrapper">
<input list="orderTypes" class="fireChange dlInput" class="form-control fireChange" placeholder="Stage" value="Red">
<div class="helper"></div>
<datalist id="orderTypes">
<option value="Red">
<option value="Green">
<option value="Yellow">
</datalist>
</div>
发布于 2019-08-24 21:03:23
当您设置元素的新值(在您的例子中是.dlInput类)时,您需要调用触发器() change jQuery方法。
这里是working jsFiddle:https://jsfiddle.net/r8h3dxoj/6/
因此,我更改的代码行是:
$(this).parent().prev('.dlInput').val($(this).html()).trigger('change');发布于 2019-08-24 20:19:51
下面介绍的jQuery工作正常(功能与您的相同)。我相信这是可行的,但不是在人们可能期望的时候。
$('.fireChange').change(function(){
console.log('input value changed.');
});只有当您从文本输入框中获得焦点后,此更改事件侦听器才会启动。在select下拉列表上,更改甚至会在选项被选中时立即触发,但是由于datalist实际上是作为文本输入上的一组自动完成选项发挥作用的,因此此事件似乎发生得很晚。这可能就是为什么你没有看到它触发。
Docs:根据更改元素的类型和用户与元素的交互方式,更改事件在不同的时刻触发:
附带说明:
在html方面,您可能只需要一个class属性。
class="form-control fireChange dlInput" https://stackoverflow.com/questions/57641078
复制相似问题