1

我试图通过将获得的标记除以 *100/totalmarks 来在第三个文本框中显示值;但我无法做到这一点;

        $(document).ready(function () {
            $("#TextBoxTotalMarks, #TxBx_MarksObtained").keyup(function () {
                var a = parseInt($("#TextBoxTotalMarks").val(), 10);
                var b = parseInt($("#TxBx_MarksObtained").val(), 10);
                var c;
                if (a < b) {
                   c = "sorry not accepted";
                }
                else {
                   c = ((b * 100) / a).toFixed(2);
                }
                $("#TextBoxMarksInPercent").val(c);
            });
        });

当我在总分文本框中输入 100 分,在获得的分数文本框中输入 300 分时,我没有看到“对不起,不接受”的消息

  <tr>
                <td class="shade">
                    <asp:Literal ID="Ltrl_TotalMarks" runat="server" Text="Total Marks"></asp:Literal>
                </td>
                <td>
                    <asp:TextBox ID="TextBoxTotalMarks" runat="server" />
                </td>
            </tr>
            <tr>
                <td class="shade">
                    <asp:Literal ID="Ltrl_MarksObtained" runat="server" Text="Marks Obtained"></asp:Literal>
                </td>
                <td>
                    <asp:TextBox ID="TxBx_MarksObtained" runat="server" 
                </td>
            </tr>
            <tr>
                <td class="shade">
                    <asp:Literal runat="server" ID="Lit_MarksInPercent" Text="Marks In Percent"></asp:Literal>
                </td>
                <td>
                    <asp:TextBox runat="server" ID="TextBoxMarksInPercent" />
                    <span style="color: black;">%</span>
                </td>
            </tr>
4

3 回答 3

7

更新:(在您显示标记时)

问题是ID您提供的asp:TextBox不是它的客户端ID。为此,您需要使用它的ClientID属性,例如:

var a = parseInt($("#<%=TextBoxTotalMarks.ClientID%>").val(), 10);

原始答案

我认为lc.'s answer可能是主要问题 (不是因为您的编辑),而是另外两件事:

  1. 请注意,您正在比较字符串(因此"100"将是< "30")。如果您要比较数字,请使用parseInt以下返回值val

    var a = parseInt($("#TextBoxTotalMarks").val(), 10);
    var b = parseInt($("#TxBx_MarksObtained").val(), 10);
    

    然后你可能想稍微改变你的条件:

    if (isNaN(a) || isNaN(b) || a < b) {
    
  2. 请注意,TextBoxTotalMarksandTxBx_MarksObtained应该是id值,而不是name值。所以你的输入应该是这样的:

    <input type="text" id="TextBoxTotalMarks">
    <input type="text" id="TxBx_MarksObtained">
    <input type="text" id="TextBoxMarksInPercent">
    

    或者,如果您想name改用,请将您的选择器更改为形式input[name="TextBoxTotalMarks"]和类似的形式。

涵盖了这两个,它可以工作:Live Example | 来源 (不过我认为你的计算有问题)

于 2013-03-11T05:15:01.197 回答
4

也许您还打算将事件处理程序附加到#TextBoxTotalMarks

    $("#TextBoxTotalMarks, #TxBx_MarksObtained").keyup(function () {
       ~~~~~~~~~~~~~~~~~~

如果您仍然遇到问题,您可以随时设置断点并检查您正在获取的内容ab. 正如TJ Crowder 的回答所解释的那样,这个问题很可能是字符串比较问题。

于 2013-03-11T05:13:21.390 回答
0

你这里有问题:

$("#TxBx_MarksObtained, #TxBx_MarksObtained")
//--^^^^-----------------^^^^-------------------using same selector twice.

我认为这应该是:

 $("#TxBx_MarksObtained, #TextBoxTotalMarks").keyup(function () {

这对我有用:小提琴

于 2013-03-11T05:14:07.027 回答