Asp.net 当单选按钮运行时,使用jQuery检查单选按钮=";服务器";?

Asp.net 当单选按钮运行时,使用jQuery检查单选按钮=";服务器";?,asp.net,jquery,html,radio-button,checked,Asp.net,Jquery,Html,Radio Button,Checked,使用jQuery,我希望能够单击一个元素,该元素还将检查它的相关单选按钮。在我们不得不将runat=“server”添加到单选按钮之前,我一直都可以正常工作 当我应用它时,它会阻止我的jQuery函数工作,我也不知道如何绕过它,下面是代码的简化版本: HTML 我发现当它转换为.net控件而不是checked=“checked”(通常是这样)时,它只是被选中了,所以我改变了这一点,但在多个浏览器中检查DOM时,我的单选按钮都没有被选中:-( 是否有其他方法可以使用jQuery检查包含runat=

使用jQuery,我希望能够单击一个元素,该元素还将检查它的相关单选按钮。在我们不得不将runat=“server”添加到单选按钮之前,我一直都可以正常工作

当我应用它时,它会阻止我的jQuery函数工作,我也不知道如何绕过它,下面是代码的简化版本:

HTML

我发现当它转换为.net控件而不是checked=“checked”(通常是这样)时,它只是被选中了,所以我改变了这一点,但在多个浏览器中检查DOM时,我的单选按钮都没有被选中:-(

是否有其他方法可以使用jQuery检查包含runat=“server”的单选按钮


干杯!

我也遇到了同样的问题。要使用jQuery UI使您的
单选按钮变得漂亮,必须编写以下代码:

<div id="radio">
<input type="radio" id="radio1" runat="server" />
<label for="radio1">The label of the radio button</label>
...
</div>

<script type="text/javascript">
$('#radio').buttonset();
</script>

单选按钮的标签
...
$(“#收音机”).buttonset();
标签的for属性必须正确引用输入标记的id。如果网页位于母版页内,则输入标记的id将被修改为类似于
ctl00\u something\u radio1
,标签的for属性突然不再引用输入标记。请注意,在ASP.NET中!

.is(“:选中”)适用于ASP.NET单选按钮和复选框

$('#SomethingElse').click(function() {
    $('input[title=Sector1]').is(':checked');
});

我认为您的问题在于输入的id不再是sector1Radio,而是ctl00\u sector1Radio或类似的东西。如果您的输入控件位于例如ContentPlaceHolder控件(使用母版页时)内,则会发生这种情况

您是否可以检查生成的HTML代码(在浏览器中)以验证是否存在这种情况?输入控件的id是什么

如果是这种情况,则需要生成js jQuery代码

$('#SomethingElse').click(function() {
  $('input[title=Sector1]').attr('checked','checked');
});
从codebehind,以便用控件的ClientID替换某些内容。

尝试使用

$('input[title=Sector1]').attr('checked',true);

或许

$('#SomethingElse').click(function () {
    $('input[title=Sector1]').attr('checked',!$('input[title=Sector1]').attr('checked'));
});

正如其他人所建议的,ASP.net不会生成与您指定的ID相同的html

快速解决方案:

  • 您可以继续使用id,但要求jquery检查id的结尾,例如:

    $(“输入[id$='sector1Radio']”)是(“:选中”)

  • 或者按照Nico的建议核对标题和姓名

  • 例如,使用不受ASP.net影响的class元素

    $(“input.sector1Radio”)是(“:checked”)


最好的方法是查看生成的html代码并查看id为您提供了什么,然后您可以使用适当的jquery选择器,因为生成的id可能具有不同的扩展,这取决于您是否使用母版页等。

如果您使用母版页或动态创建控件,则控件id可能是正在重命名为#SomethingElse成为#main content#u SomethingElse

检查这一点的最简单方法是使用Firefox或Chrome的WebDeveloper插件。 转到信息->显示元素信息,然后选择有问题的对象。它将为您提供其ID、类以及祖先和子对象信息。 检查该ID是否由.NET动态更改

如果是这样的话:

为了防止这种情况,在服务器端代码中,可以使用以下属性创建静态ID

SomethingElse.ClientIDMode = ClientIDMode.Static;
然后可以在jQuery中引用

$('#SomethingElse').click(function() {
            if ($('input[title=Sector1]').attr('checked')) {
             //execute event
});

我认为在ASP网络中,复选框和单选按钮会在输入后生成一个“输入”和一个“范围”,因此您只需要选择输入

您可以尝试:

$('.classname input[type=checkbox]').each(function() {
        this.checked = true;
});

这里有两件事:查找控件并执行检查。在ASP.NET中,控件的实际ID和名称最终将根据它出现的runat=“server”容器进行更改,即使这些容器没有ID

呈现的ASP.NET控件始终以与开始时相同的名称结尾,因此标记如下:

<input type="radio" runat="server" id="sector1Radio" title="Sector1" />
此语法将查找id包含“$sector1Radio”的任何单选按钮

一旦有了元素,就可以使用下面的代码选中或取消选中它,您可以从其他元素的click事件中调用这些代码

// check the radio button
$("input[type='radio'][id*='$sector1Radio']").attr('checked', true);    

// uncheck the radio button
$("input[type='radio'][id*='$sector1Radio']").attr('checked', false);   
最后一件事…如果您只想在按下按钮时单击一块文本(将其包装在标记中,并将AssociatedControlId属性设置为单选按钮的控件名称,如下所示

<input type="radio" runat="server" id="sector1Radio" title="Sector1" />
<asp:label runat="server" id="lblsector1Radio" associatedControlID="sector1Radio">clicking here clicks and unclicks the radio button</asp:label>

单击此处可单击并松开单选按钮

添加runat=“server”不应该影响您的代码。您是否也将此属性添加到“SomethingElse”元素中,因为它可能会更改呈现的ID?是的,我认为这也不会影响它,我没有将其添加到“SomethingElse”中,这是一个锚定标记,如果有帮助的话?@wyane我刚刚使用属性runat=“server”进行了测试而且它似乎工作得很好…看起来像是一个冲突,你在同一个页面中使用了其他javascript框架吗?@manraj82真棒,事实上你已经让它工作了,这是一个好消息!虽然我没有使用任何其他js框架,但我只是开始一个消除这个问题的过程,我会让你知道它是如何进行的。谢谢你的帮助!我的答案是严重失真:($('#')。单击(function(){$('input[title=Sector1]')。attr('checked','checked');});更好的方法是使用$('#[id$='SomethingElse']))
<input type="radio" runat="server" id="sector1Radio" title="Sector1" />
<input type="radio" runat="server" id="ctl0$ctl0$sector1Radio" name="ctl0_ctl0_SectorGroup" title="Sector1" />
$("input[type='radio'][id*='$sector1Radio']")
// check the radio button
$("input[type='radio'][id*='$sector1Radio']").attr('checked', true);    

// uncheck the radio button
$("input[type='radio'][id*='$sector1Radio']").attr('checked', false);   
<input type="radio" runat="server" id="sector1Radio" title="Sector1" />
<asp:label runat="server" id="lblsector1Radio" associatedControlID="sector1Radio">clicking here clicks and unclicks the radio button</asp:label>