1

得られたマークを*100/ totalmarksで割って、3番目のテキストボックスに値を表示しようとしています。しかし、私はそれを行うことができません。

        $(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ではないことIDです。それを取得するには、そのプロパティを使用する必要があります。asp:TextBoxClientID

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

元の答え:

私はlc.の答えがおそらく主な問題だと思い ます(あなたの編集以来ではありません)が、他に2つのことがあります:

  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. TextBoxTotalMarksandは、値ではなく値でTxBx_MarksObtainedある必要があることに注意してください。したがって、入力は次のようになります。idname

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

    または、name代わりに使用する場合は、セレクターをフォームinput[name="TextBoxTotalMarks"]などに変更します。

これらの両方がカバーされていれば、機能します出典 (計算に問題があると思いますが)

于 2013-03-11T05:15:01.197 に答える
4

おそらく、イベント ハンドラも にアタッチするつもりでした#TextBoxTotalMarksか?

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

それでも問題が発生する場合は、いつでもブレークポイントを設定して、何を取得しているのかを確認できaますbTJ Crowder's answerが説明しているように、問題は文字列比較の問題である可能性が最も高いです。

于 2013-03-11T05:13:21.390 に答える
0

ここに問題があります:

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

これは次のようにすべきだと思います:

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

これは私にとってはうまくいきます:FIDDLE

于 2013-03-11T05:14:07.027 に答える