为什么jQuery如果条件不起作用?

Dot*_*mer 1 jquery conditional-statements

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

        $(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);
            });
        });
Run Code Online (Sandbox Code Playgroud)

当我在总标记文本框中输入类似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>
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 7

更新 :( 显示标记时)

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

var a = parseInt($("#<%=TextBoxTotalMarks.ClientID%>").val(), 10);
Run Code Online (Sandbox Code Playgroud)

原始答案:

我认为lc.的答案可能是主要问题 (不是自编辑以来),而是另外两件事:

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

    var a = parseInt($("#TextBoxTotalMarks").val(), 10);
    var b = parseInt($("#TxBx_MarksObtained").val(), 10);
    
    Run Code Online (Sandbox Code Playgroud)

    然后你可能想稍微改变你的状况:

    if (isNaN(a) || isNaN(b) || a < b) {
    
    Run Code Online (Sandbox Code Playgroud)
  2. 请注意,TextBoxTotalMarksTxBx_MarksObtainedid值,而不是name值.所以你的输入应该是这样的:

    <input type="text" id="TextBoxTotalMarks">
    <input type="text" id="TxBx_MarksObtained">
    <input type="text" id="TextBoxMarksInPercent">
    
    Run Code Online (Sandbox Code Playgroud)

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

有了这两个,它的工作原理:实例 | 来源 (我认为你的计算存在问题)

  • +1用于解释字符串比较的缺陷. (2认同)
  • @DotNetDreamer:实际上,你不是.请参阅更新的答案. (2认同)