Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 下拉列表不工作时的更改事件_Jquery_Html - Fatal编程技术网

Jquery 下拉列表不工作时的更改事件

Jquery 下拉列表不工作时的更改事件,jquery,html,Jquery,Html,我有一个html表单,有很多文本字段和下拉列表。我需要遍历所有下拉列表,然后进行一些验证。在该页面中,当页面加载时,只有第一个下拉列表可见。其余的下拉列表将基于单击某些单选按钮显示。我已经编写了一个jquery函数来迭代这些下拉列表。但现在它只在第一个下拉列表中进行迭代。它没有进入第二个 HTML: 现在仅在第一个下拉列表中显示alert2。当我更改第二个下拉列表的值时,不会触发alert2,因此我无法验证该下拉列表。 有人能帮我理解我做错了什么吗?立即注册所有select元素的更改处理程序。。

我有一个html表单,有很多文本字段和下拉列表。我需要遍历所有下拉列表,然后进行一些验证。在该页面中,当页面加载时,只有第一个下拉列表可见。其余的下拉列表将基于单击某些单选按钮显示。我已经编写了一个jquery函数来迭代这些下拉列表。但现在它只在第一个下拉列表中进行迭代。它没有进入第二个

HTML:

现在仅在第一个下拉列表中显示alert2。当我更改第二个下拉列表的值时,不会触发alert2,因此我无法验证该下拉列表。
有人能帮我理解我做错了什么吗?

立即注册所有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
        });
});