我正在开发一个asp.net应用程序,其中我有一个从母版页派生的内容页面,在页面内部我有一个gridview控件,其中我有一些绑定字段和一个文本框来获取值并计算剩余部分。我使用以下javascript代码。
<td colspan="4">
<div id="divGrid" style="width: 890px; height: 200px; overflow: auto">
<asp:GridView ID="CustomerGrid" runat="server" BackColor="White" AutoGenerateColumns="False"
BorderColor="#336666" BorderStyle="Double" BorderWidth="3px" CellPadding="4"
GridLines="Horizontal" Width="920px">
<RowStyle BackColor="White" ForeColor="#333333" />
<%-- <HeaderStyle CssClass="HeaderFreeze" />--%>
<Columns>
<asp:BoundField DataField="Ref_No" HeaderText="Deal/Transfer Ref # " >
<HeaderStyle Font-Names="Verdana" Font-Size="11px" />
<ItemStyle Font-Names="Verdana" Font-Size="11px" Width="180px" ForeColor="Blue" Font-Bold="true" />
</asp:BoundField>
<asp:BoundField DataField="Settlement_Date" HeaderText="Settlement Date" >
<HeaderStyle Font-Names="Verdana" Font-Size="11px" />
<ItemStyle Font-Names="Verdana" Font-Size="11px" />
</asp:BoundField>
<asp:BoundField DataField="Settlement_Amount" HeaderText="Settlement Amt" >
<HeaderStyle Font-Names="Verdana" Font-Size="11px" />
<ItemStyle Font-Names="Verdana" Font-Size="11px" />
</asp:BoundField>
<asp:BoundField DataField="Interest_Rate" HeaderText="Interest Rate" >
<HeaderStyle Font-Names="Verdana" Font-Size="11px" />
<ItemStyle Font-Names="Verdana" Font-Size="11px" />
</asp:BoundField>
<asp:BoundField DataField="PDealerName" HeaderText="Primary Dealer" >
<HeaderStyle Font-Names="Verdana" Font-Size="11px" />
<ItemStyle Font-Names="Verdana" Font-Size="11px" />
</asp:BoundField>
<asp:BoundField DataField="PD_Price" HeaderText="PD Price" >
<HeaderStyle Font-Names="Verdana" Font-Size="11px" />
<ItemStyle Font-Names="Verdana" Font-Size="11px" />
</asp:BoundField>
<asp:TemplateField HeaderText="FaceValue">
<ItemTemplate>
<asp:Label ID="LBLFaceValue" runat="server" Text='<%# Eval("Face_Value") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle Font-Names="Verdana" Font-Size="11px" />
<ItemStyle Font-Names="Verdana" Font-Size="11px" />
</asp:TemplateField>
<%-- <asp:BoundField DataField="Face_Value" HeaderText="Face Value" >
<HeaderStyle Font-Names="Verdana" Font-Size="11px" />
<ItemStyle Font-Names="Verdana" Font-Size="11px" />
</asp:BoundField>--%>
<asp:BoundField DataField="Available" HeaderText="Available" >
<HeaderStyle Font-Names="Verdana" Font-Size="11px" />
<ItemStyle Font-Names="Verdana" Font-Size="11px" />
</asp:BoundField>
<asp:TemplateField HeaderText="Value">
<ItemTemplate>
<asp:TextBox ID="txtValue" runat="server" Width="100px" onblur="CalculateTotals();"></asp:TextBox>
</ItemTemplate>
<HeaderStyle Font-Names="Verdana" Font-Size="11px" />
<ItemStyle Font-Names="Verdana" Font-Size="11px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Remaining">
<ItemTemplate>
<asp:Label ID="lblRemaining" runat="server" Text=""></asp:Label>
</ItemTemplate>
<HeaderStyle Font-Names="Verdana" Font-Size="11px" />
<ItemStyle Font-Names="Verdana" Font-Size="11px" />
</asp:TemplateField>
<asp:BoundField DataField="Transaction_Type" HeaderText="T" Visible="false">
<HeaderStyle Font-Names="Verdana" Font-Size="11px" />
<ItemStyle Font-Names="Verdana" Font-Size="11px" />
</asp:BoundField>
</Columns>
<FooterStyle BackColor="White" ForeColor="#333333" />
<PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#336666" Font-Bold="True" ForeColor="White" />
</asp:GridView>
</div>
</td>
<script type="text/javascript">
function CalculateTotals() {
var gv = document.getElementById("<%= CustomerGrid.ClientID %>");
var tb = gv.getElementsByTagName("input");
var lb = gv.getElementsByTagName("span");
var sub = 0;
var total = 0;
var indexQ = 1;
var indexP = 0;
for (var i = 0; i < tb.length; i++) {
if (tb[i].type == "text") {
sub = parseFloat(lb[indexP].innerHTML) - parseFloat(tb[i].value);
if (sub < 0)
{
alert("Exceeding from the face value...");
return;
tb[i].focus();
//return;
}
if (isNaN(sub)) {
lb[i + indexQ].innerHTML = "";
sub = 0;
}
else {
lb[i + indexQ].innerHTML = sub;
}
indexQ++;
indexP = indexP + 2;
total += parseFloat(sub);
}
}
}
</script>
问题是我有一个条件,输入值不能超过面值。如果它超过它显示警告..我想显示错误,焦点应该回到该特定行的文本框控件。不知何故,它没有将焦点设置回特定行的文本框控件。
只需检查我需要修改的区域。
if (sub < 0)
{
alert("Exceeding from the face value...");
return;
tb[i].focus();
//return;
}
有什么建议吗?
答案 0 :(得分:1)
返回是在焦点调用之前。焦点永远不会被称为代码当前的方式。
alert("Exceeding from the face value...");
return;
tb[i].focus();
应该是
alert("Exceeding from the face value...");
tb[i].focus();
return;