在单选按钮列表单击事件上显示确认消息框

时间:2014-08-25 16:03:42

标签: javascript jquery asp.net

我在Div中有一个单选按钮列表(radio1,radio2,radio3)。

当我点击其中一个收音机时,我隐藏并显示一个包含一些复选框的div。 单击单选按钮我需要确保取消选中已经选中的复选框。

因此,用户可以选择一个单选按钮,并且可以选中与Div相关的复选框。 如果用户选择radio2,那么我应该能够取消选中除radio2之外的其他div的所有内容。

我可以使用以下代码实现上述情况。

但问题是:    - 假设如果已经检查了radio2,并且用户再次点击radio2:它取消选中radio2的内容。我需要停下来。

我想添加一个确认消息框(确定和取消按钮),每次点击它都会警告用户。如果用户点击取消,那么它应该将状态保持为现有状态。

我已为此编写了一个函数,但它无效。

<div id="radioDiv">                    
    <asp:RadioButtonList ID="radioList" runat="server" >
        <asp:ListItem Value="0" >NewYork</asp:ListItem>
        <asp:ListItem Value="1" >London</asp:ListItem>
        <asp:ListItem Value="2" >Paris</asp:ListItem>
    </asp:RadioButtonList>
</div> 

<div id=nyDiv>
    <asp:CheckBox ID="nycheck1" runat="server" ></asp:CheckBox>
        <asp:CheckBox ID="nycheck2" runat="server" ></asp:CheckBox>
</div>
<div id=ldDiv>
    <asp:CheckBox ID="ldcheck1" runat="server" ></asp:CheckBox>
        <asp:CheckBox ID="ldcheck2" runat="server" ></asp:CheckBox>
</div>
<div id=paDiv>
    <asp:CheckBox ID="pacheck1" runat="server" ></asp:CheckBox>
        <asp:CheckBox ID="pacheck2" runat="server" ></asp:CheckBox>
</div>



function showCity(city) {
    jQuery('#radioDiv input').click(function () {
        //Show confirm message  
        showConfirmMessage('#radioDiv input:radio:checked');

        //Show Hide div
        if (jQuery('#radioDiv input:radio:checked').val() == ) {
            jQuery('#nyDiv').css("display", "block");
            jQuery('#ldDiv').css("display", "none");
            jQuery('#paDiv').css("display", "none");
        }
    }
}


function showConfirmMessage(radioDiv) {
    if (jQuery(radioDiv).val() == 0) {
        var result = confirm("Moving to another city will result in loosing all the existing changes.");
        if (result) {
            return true;
        } else {
            return false;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

所以你说当点击一个收音机并出现相应的复选框div时,再次点击该收音机会将这些复选框重置为默认值。

如果是这种情况,则无法在第一次单击后添加一个“活动”类或类似的东西,以将单选按钮标记为正在使用。然后当您再次单击它时,请在重置复选框之前检查该单选按钮是否具有活动类。

所以基本上,如果用户尝试再次单击它,则禁用单选按钮,并在单击另一个单选按钮时重新启用它。

请原谅我的代码,我在巴士站。我回家时会给你一个例子。

修改

http://jsfiddle.net/1L34rm96/8/

只是我认为你正在做的简化版。不应该太难将它转换过来。我在小提琴里留下了很多评论。

HTML

<form>
<input class="radios" type="radio" name="r" value="male">r1</input>
<br/>
<input class="radios" type="radio" name="r" value="female">r2</input>
<br/>
<input class="radios" type="radio" name="r" value="male">r3</input>
<br/>
</form>
<div id="checkBoxes">
<input type="checkbox" name="vehicle" value="Bike">I have a bike</input>
<br/>
<input type="checkbox" name="vehicle" value="Car">I have a car</input>
<br/>
<input type="checkbox" name="vehicle" value="Bike">I have a wife</input>
<br/>
<input type="checkbox" name="vehicle" value="Car">I have a stupid fat dog</input>
</div>

JS

$(".radios").on("click", function () {
    if (!$this.hasClass("active")) {
        $(".radios").removeClass("active");
        $this.addClass("active");
        $("#checkBoxes").show();
        alert("I'm not selected, get me check boxes!");
    }else{ 
        //the checkboxes for that radio are currently being displayed
        //don't reset your checkboxes!
        //whatever else needs to be here
        alert("I'm already selected, do nothing!");
    }
});