Jquery 下拉列表不工作时的更改事件
我有一个html表单,有很多文本字段和下拉列表。我需要遍历所有下拉列表,然后进行一些验证。在该页面中,当页面加载时,只有第一个下拉列表可见。其余的下拉列表将基于单击某些单选按钮显示。我已经编写了一个jquery函数来迭代这些下拉列表。但现在它只在第一个下拉列表中进行迭代。它没有进入第二个 HTML: 现在仅在第一个下拉列表中显示alert2。当我更改第二个下拉列表的值时,不会触发alert2,因此我无法验证该下拉列表。Jquery 下拉列表不工作时的更改事件,jquery,html,Jquery,Html,我有一个html表单,有很多文本字段和下拉列表。我需要遍历所有下拉列表,然后进行一些验证。在该页面中,当页面加载时,只有第一个下拉列表可见。其余的下拉列表将基于单击某些单选按钮显示。我已经编写了一个jquery函数来迭代这些下拉列表。但现在它只在第一个下拉列表中进行迭代。它没有进入第二个 HTML: 现在仅在第一个下拉列表中显示alert2。当我更改第二个下拉列表的值时,不会触发alert2,因此我无法验证该下拉列表。 有人能帮我理解我做错了什么吗?立即注册所有select元素的更改处理程序。。
有人能帮我理解我做错了什么吗?立即注册所有select元素的更改处理程序。。。。如果选择不可见,则不会激发它
$('#form1 .class_dd select').change(function () {
alert("2");
});
试试这个
$(".class2").on("change",function(){
console.log($(this).val());
});
你可以用
更改只是bindchange的捷径。尝试以下代码:
尝试更改此选项:
$(this).find('a:visible + select')
为此:
$(document).on('change', 'a:visible + select', function () {
alert("2");
//doing some validations
});
请尝试以下代码:
<form id="myfrm">
<div class="input-container class_dd">
<select class="class2" id="dd1" name="dd11">
<option value="">Month</option>
<option value="1">Jan</option>
</select>
</div>
<div class="input-container class_dd">
<select class="class2" id="dd2" name="dd22">
<option value="">year</option>
<option value="1900">1900</option>
</select>
</div>
$('#myfrm select').each(function(i,obj) {
$(this).change(function () {
console.log(this);
//doing some validations
});
});
您在jQuery选择器中引用的代码在哪里?您确定您的代码是正确的吗?我不认为这个代码会触发第一个dropdown@oGeez..This下拉菜单使用selectmenu设置样式。所以为了得到下拉列表的值,我需要像这样使用find'a:visible+select'Hi Jai..我使用$this.find'a:visible+select'因为下拉列表是使用selectmenu设计的..所以我上面的代码在第一个下拉列表中运行良好。但是当我更改第二个下拉列表的任何值时,会显示alert2.Tat alert2.Hi Jai.当我给出'change'时,函数{};,警报对于第一个下拉菜单本身不起作用…@Nish..感谢您的回复..我的代码有问题,因为我们使用selectmenu进行下拉菜单。由于选择菜单,为了获得下拉菜单本身的值,我必须使用$'a:visible+select.class2'。。使用selectmenu时,原始slect元素在页面中呈现为隐藏。相反,我们有元素..这就是我在问题中使用的上面的代码我只使用上面的代码..但是当页面呈现时,在firebug中,我可以看到标记。因此,在firebug中,我编写了上面的$'a:visible+select.class2'来获取下拉值。我将为您获取firebug代码Hi Nish..在标记之后,您可以看到一个元素。这是html中唯一的代码。但是在呈现时,它会添加上面所有的代码$'myfrm select:visible'。每个函数I,obj{$this.changefunction{}试试这个。它只提供可见的下拉列表
$(".class2").on("change",function(){
alert( $(this).attr('id') );
});
$(this).find('a:visible + select')
$(document).on('change', 'a:visible + select', function () {
alert("2");
//doing some validations
});
<form id="myfrm">
<div class="input-container class_dd">
<select class="class2" id="dd1" name="dd11">
<option value="">Month</option>
<option value="1">Jan</option>
</select>
</div>
<div class="input-container class_dd">
<select class="class2" id="dd2" name="dd22">
<option value="">year</option>
<option value="1900">1900</option>
</select>
</div>
$('#myfrm select').each(function(i,obj) {
$(this).change(function () {
console.log(this);
//doing some validations
});
});