【问题标题】:Asp radio buttons is not calling javascript functionAsp 单选按钮不调用 javascript 函数
【发布时间】:2018-02-28 06:28:24
【问题描述】:

我正在使用 asp :radio 按钮。我正在尝试使用 2 个单选按钮,以便如果选择其中任何一个按钮,则其他选项将被取消选中。我在这些按钮的更改事件上调用 JavaScript 函数。该函数将添加一些值并在文本框中返回输出。我尝试使用普通的 asp 按钮,然后切换到单选按钮组,现在尝试单选按钮列表。需要在单选按钮更改事件上调用 javascript 函数。这些按钮将选中和未选中,但 java 脚本函数没有返回正确的值。我猜有些命名约定不正确或某些东西不起作用。期待帮助解决这个问题。这 3 种方法中的任何一种都不起作用。

我的 test.aspx 文件包含

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <div class="span2">Test Career:</div>
                <div class="span8">
                <asp:RadioButton ID="TestCareerList" runat="server" clientmode=Static Text="MasterDegree">    

                </div>
           </ContentTemplate>
 </asp:UpdatePanel>

aspx页面中的Document.ready函数

$(document).ready(function () {
  $("input:radio").click(function () 
{
updateYears();
}
}

javascript function is:

    function updateYears() {
        var yrsDocTemp = parseFloat(yrsDoc);
        var yrsMastTemp = parseFloat(yrsMast);


        if ($("ContentPlaceHolder2_drpEmplClass").val() != "" && $("#ContentPlaceHolder2_StudentCareerList]").SelectedValue!= "") {
            var updateValue = 0;

            //Get EmplCalss
            if ($("#ContentPlaceHolder2_drpEmplClass").val() == "GA") {
                updateValue = updateValue + 1;
            }
            else if ($("#ContentPlaceHolder2_drpEmplClass").val() == "GAF" || $("#ContentPlaceHolder2_drpEmplClass").val() == "GAP") {
                updateValue = updateValue + .5;
            }


            if ($("#ContentPlaceHolder2_Career").Text =="DoctoralDegree")
                {
                yrsDocTemp = yrsDocTemp + updateValue;
            }

            else if ($("#ContentPlaceHolder2_Career").Text == "MastersDegree") {

                yrsMastTemp = yrsMastTemp + updateValue;
            }

        }

        //Update the fields
        $("#ContentPlaceHolder2_drpYearsDoctoral").val(yrsDocTemp);
        $("#ContentPlaceHolder2_drpYearsMasters").val(yrsMastTemp);
    }

I am calling this function under document.ready function like this-



    $("input:RadioButtonList[ID=^TestCareerList").change(function(){
                    updateYears();
                });

                $("#ContentPlaceHolder2_drpEmplClass").change(function () {
                    updateYears();
                });


When I debug the javascript code I see the names of buttons have been changed.

    <tr>
                <td>
                <input id="ContentPlaceHolder2_TestCareerList_0" type="radio" name="ctl00$ContentPlaceHolder2$TestCareerList" value="MastersDegree" />
                <label for="ContentPlaceHolder2_TestCareerList_0">Master</label>
                </td>
                <td><input id="ContentPlaceHolder2_TestCareerList_1" type="radio" name="ctl00$ContentPlaceHolder2$TestCareerList" value="DoctoralDegree" />
                <label for="ContentPlaceHolder2_TestCareerList_1">Doctoral</label>
                </td>
    </tr>

    Kindly looking for help.

【问题讨论】:

    标签: javascript asp.net radio-button


    【解决方案1】:

    这是试图绑定到你的服务器端元素:

    $("input:RadioButtonList[ID=^TestCareerList")
    

    但是 JavaScript 不知道服务器端代码。它仅在客户端代码上运行。而且,正如您所注意到的,您的客户端 HTML 是不同的。所以你的 JavaScript 需要以 那个 代码为目标。像这样的:

    $("input:radio[ID=*TestCareerList")
    

    对于您拥有的任何其他选择器也是如此。正如您所发现的,WebForms 控件在精细控制您的客户端代码方面不是很好。 ASP.NET MVC 使这变得容易得多,但对于您正在做的事情来说可能是一个非常根本的转变。

    可能有帮助的是将某些控件上的ClientID 属性设置为Static。但是,在执行此操作时要小心并相应地调试您的 HTML,因为如果您的 HTML 中出现重复的 id 值,那么它是无效的,并且在选择 id 时 JavaScript 的行为将是未定义的。

    【讨论】:

    • 我是否只需要更改 javascript 函数。用你提到的那条线。或者我需要添加一些通配符,因为控件的名称在服务器端发生变化。 aspx代码有什么问题吗?
    • @user2897967:总的来说,它相当广泛,但问题的核心是您需要 jQuery 选择器来定位您的 HTML,而不是您的服务器端 ASP.NET 代码。至于“是否有任何问题”,这取决于您是否观察到任何类型的问题。当然,您的代码中可能存在多个错误,但此处确定的错误是您首先要修复的错误。
    • 感谢您的快速回复。不,它不起作用。
    • @user2897967:定义“没用”。什么是更新的 HTML?更新的 JavaScript 是什么?它以什么具体方式失败?
    • @user2897967:哪个更改事件?事件是否首先绑定到任何元素?同样,更新的代码是什么?您需要至少提供一些关于问题的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 2013-09-07
    • 2011-10-01
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    相关资源
    最近更新 更多