Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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
Javascript 将我的jquery与onclick事件混合也与SelectedIndexChanged事件相关联_Javascript_Asp.net - Fatal编程技术网

Javascript 将我的jquery与onclick事件混合也与SelectedIndexChanged事件相关联

Javascript 将我的jquery与onclick事件混合也与SelectedIndexChanged事件相关联,javascript,asp.net,Javascript,Asp.net,问题是不会发生回发。我注意到如果我返回true,情况就不会是这样了。。然而,有不确定的结果,所以我感到茫然。 感谢您的帮助 <DropDownList ID="ddlS1" runat="server" onclick = "checkHighDegreeCompliance(this, 1);" SelectedIndexChanged = "ddlS1_SelectedIndexChanged" AutoPostBack="true" > 以下是加载后实

问题是不会发生回发。我注意到如果我返回true,情况就不会是这样了。。然而,有不确定的结果,所以我感到茫然。 感谢您的帮助

          <DropDownList ID="ddlS1" runat="server" onclick = "checkHighDegreeCompliance(this, 1);" SelectedIndexChanged = "ddlS1_SelectedIndexChanged" AutoPostBack="true" >

以下是加载后实际页面上的标记

<select name="rptrSection1$ctl00$rptrSection2$ctl00$ddlS2" class="DDLSelector2 SDropDown IsNormal" id="rptrSection1_ctl00_rptrSection2_ctl00_ddlS2" style="width: 200px;" onchange="checkHighDegreeCompliance(this, 2);setTimeout('__doPostBack(\'rptrSection1$ctl00$rptrSection2$ctl00$ddlS2\',\'\')', 0)">

下面是javascript

function checkHighDegreeCompliance(obj, sectionNum)
{
var parDdl = $(obj);
var parCompLev = parDdl.attr('selectedIndex');
var pnlDiv = parDdl.parents('.Section');
var ddls = pnlDiv.find('.DDLSelector' + (sectionNum + 1));
ddls.each(function ()
{
    var childDDL = $(this);
    var childComLev = childDDL.attr('selectedIndex');
    if (childComLev > parCompLev)
    {
        parDdl.attr('selectedIndex', childComLev);
    }
    if (sectionNum < 4)
    {
        checkHighDegreeCompliance(childDDL, ++sectionNum);
    }
});
}
函数检查HighDegreeCompliance(obj,sectionNum)
{
var parDdl=$(obj);
var parCompLev=parDdl.attr('selectedIndex');
var pnlDiv=parDdl.parents(“.Section”);
var ddls=pnlDiv.find('.DDLSelector'+(sectionNum+1));
ddls.each(函数()
{
var childDDL=$(此值);
var childComLev=childDDL.attr('selectedIndex');
如果(childComLev>ParComLev)
{
parDdl.attr('selectedIndex',childComLev);
}
if(sectionNum<4)
{
检查HighDegreeCompliance(childDDL,++sectionNum);
}
});
}

onclick
事件之前尝试使用
return
关键字

 <DropDownList ID="ddlS1" runat="server" onclick = "return checkHighDegreeCompliance(this, 1);" SelectedIndexChanged = "ddlS1_SelectedIndexChanged" AutoPostBack="true" >


如果它不起作用,请告诉我。

很难通过给出的代码判断您想要完成什么。你能再详细一点吗?我有一个嵌套的中继器结构。除了第四个转发器外,每个转发器的模板看起来都一样,所以每个内部转发器都是相同的,只是第四个转发器只有DDL。其思想是,有一种从DDL中选择值的能力,然后它将递归地检查所有内部中继器和关联的DDL,以确保新选择的顶级值不会与内部块值冲突。。。i、 e,顶级DDL值不能低于内部块元素。反过来也是如此,最高阶的元素会向块结构上传播,但真正的问题是,当我绑定到onchange事件时,我无法恢复post。是否有另一种方法来确保触发changeHighDegreeComlicance()方法(最好在服务器端事件完成之前)。