我试图通过除以获得的标记* 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);
});
});
当我在总标记文本框中输入类似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>
答案 0 :(得分:7)
更新:(截至显示标记时)
问题在于,您ID
asp:TextBox
不是客户端 ID。为此,您需要使用其ClientID
property,例如:
var a = parseInt($("#<%=TextBoxTotalMarks.ClientID%>").val(), 10);
原始回答:
我认为lc.'s answer可能是主要问题 (不是自编辑以来),还有其他两件事:
请注意,您要比较字符串(因此"100"
将为<
"30"
)。如果您要比较数字,请对parseInt
的返回值使用val
:
var a = parseInt($("#TextBoxTotalMarks").val(), 10);
var b = parseInt($("#TxBx_MarksObtained").val(), 10);
然后你可能想稍微改变你的状况:
if (isNaN(a) || isNaN(b) || a < b) {
请注意,TextBoxTotalMarks
和TxBx_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 | Source (我认为您的计算存在问题)
答案 1 :(得分:4)
也许您打算将事件处理程序附加到#TextBoxTotalMarks
?
$("#TextBoxTotalMarks, #TxBx_MarksObtained").keyup(function () {
~~~~~~~~~~~~~~~~~~
如果您仍然遇到问题,可以随时设置断点并检查您为a
和b
获取的内容。问题很可能是T.J. Crowder's answer解释的字符串比较问题。
答案 2 :(得分:0)
你有问题:
$("#TxBx_MarksObtained, #TxBx_MarksObtained")
//--^^^^-----------------^^^^-------------------using same selector twice.
我认为这应该是:
$("#TxBx_MarksObtained, #TextBoxTotalMarks").keyup(function () {