Javascript 什么';如果没有';直到代码隐藏完成后才显示?
我试图用javascript确认消息验证textbox值。如果用户单击“确定”,则我希望文本框值添加到列表框中,但如果用户单击“取消”,则我希望清除文本框,而不是将其添加到列表中。这在桌面应用程序中非常简单,但我正在尝试创建一个web应用程序,我已经为此奋斗了数周 在textbox.textchanged事件中,我有一段代码,它首先检查以确保该值不在列表中(PublicCalls.ListContainsIndex),然后搜索一个表以确保该值未被标记为已计数(brlCounted)。如果已经计算过,用户应得到提示,询问是否要继续重新计算该值或跳过该值:Javascript 什么';如果没有';直到代码隐藏完成后才显示?,javascript,asp.net,client-server,code-behind,confirm,Javascript,Asp.net,Client Server,Code Behind,Confirm,我试图用javascript确认消息验证textbox值。如果用户单击“确定”,则我希望文本框值添加到列表框中,但如果用户单击“取消”,则我希望清除文本框,而不是将其添加到列表中。这在桌面应用程序中非常简单,但我正在尝试创建一个web应用程序,我已经为此奋斗了数周 在textbox.textchanged事件中,我有一段代码,它首先检查以确保该值不在列表中(PublicCalls.ListContainsIndex),然后搜索一个表以确保该值未被标记为已计数(brlCounted)。如果已经计算
Protected Sub txtBrlKey_TextChanged(sender As Object, e As EventArgs) Handles txtBrlKey.TextChanged
Dim tmpBarrels As New cBarrels
Try
With Me
If Trim(.txtBrlKey.Text) <> "" Then
If Not PublicCalls.ListContainsIndex(Me, .lstBarrels, .txtBrlKey.Text) > -1 Then
If Me.Title = "frmBarrelMoves" And (PublicCalls.gPhysicalInventory Or PublicCalls.gCycleCount) Then ' called from the Physical Inventory or Cycle Count form (frmBarremMoves)
tmpBarrels = tmpBarrels.Search(Me, "spa_Barrel_Select '" & .txtBrlKey.Text & "'")
If LCase(tmpBarrels.item(1).BrlCounted) = LCase("Y") Then
If PublicCalls.MsgBoxConfirm(Me, "This Barrel ID has already been counted. Continue?") = False Then
txtBrlKey.Text = "" ' clear the control
Else
gBarrelEntered = True
UpdateBarrelList("I", .txtBrlKey.Text) ' add the barrel to the barrel list
gBarrelEntered = False
End If
End If
End If
End If
End If
End With
tmpBarrels = Nothing
Catch ex As Exception
PublicCalls.DisplayBblErrors(Me, ex, Nothing)
End Try
End Sub
javascript(在Site.Master标题中)如下所示:
Public Shared Function MsgBoxConfirm(thePage As Page, Message As String) As Boolean
Dim HiddenConfirmResponse As HiddenField = CType(thePage.Master.FindControl("txtConfirmResponse"), HiddenField)
MsgBoxConfirm = False
HiddenConfirmResponse.Value = ""
' somehow this function needs to return true or false depending on if the user clicked OK or Cancel
' the problem is that ConfirmBox fires after the server side code finishes, which is too late to capture the OK or Cancel response here
Try
thePage.ClientScript.RegisterStartupScript(thePage.[GetType](), "ConfirmBox", (Convert.ToString("ConfirmBox('") & Message) + "');", True)
If HiddenConfirmResponse.Value = "OK" Then
MsgBoxConfirm = True
End If
Catch ex As Exception
PublicCalls.DisplayBblErrors(thePage, ex, Nothing)
End Try
End Function
<script type="text/javascript">
function ConfirmBox(message) {
var Answer = confirm(message);
if (Answer) {
document.getElementById('<%=txtConfirmResponse.ClientID%>').value = "OK";
} else {
document.getElementById('<%=txtConfirmResponse.ClientID%>').value = "Cancel";
}
}
</script>
功能确认框(消息){
var应答=确认(消息);
若有(答复){
document.getElementById(“”).value=“确定”;
}否则{
document.getElementById(“”).value=“取消”;
}
}
隐藏的txtConfirmResponse在主体中定义:
<asp:HiddenField ID="txtConfirmResponse" runat="server" />
当确认框出现时,隐藏的代码已经移动,并且由于MsgBoxConfirm默认返回false,因此该值永远不会添加到列表中。如果我将默认值更改为True,则无论发生什么情况,该值始终添加到列表中。我搜索了又搜索,一致认为客户端代码和服务器端代码之间的分离是原因,并且在需要时,在将值添加到列表之前,我无法显示确认框。如果是这样的话,那么我看不出确认框有什么用处。我看到的回答是,“用不同的方式做”,但怎么做呢?有谁能提供一个明确的例子,说明我需要如何更改此代码才能使其正常工作?我尝试过Ajax ModalPopupXtender,但在显示确认框时没有任何区别
非常沮丧。谢谢你能提供的帮助。
Gina您尝试过使用AJAX吗?是的,我尝试过ModalPopupXtender,但在确认框出现的时间上没有任何区别——总是太晚了。