【问题标题】:How to stop a click event based on a server side JavaScript confirmation return?如何根据服务器端 JavaScript 确认返回停止点击事件?
【发布时间】:2015-12-23 15:44:13
【问题描述】:

我在正在生成的表上调用了以下属性。对于每条记录,我都有一个删除按钮,但我想在点击事件中添加一个确认框。这个代码库非常尴尬,因为几乎所有的 UI 都是在服务器端生成的,而且我没有正确使用 Web 表单最佳实践,例如明确分离的表单和背后的代码。

我决定将确认框的 JavaScript 添加到 CssButton 的属性中...如果用户在生成的客户端确认框上单击“取消”,是否有办法停止单击过程。我可以以某种方式将 javascript 传递给 bool,然后将其取回并将 AddClickHandler 建立在该 bool 上吗?提前感谢您的帮助!

Private mDeleteButton As CssButton
Private ReadOnly Property DeleteButton() As CssButton
    Get

        If mDeleteButton Is Nothing Then
            mDeleteButton = New CssButton(ButtonImage.Cancel, "Delete")
            With mDeleteButton
                .Attributes.Add("onclick", "javascript: (!confirm('Delete this future transaction?'))")
                .AddClickHandler(New EventHandler(AddressOf DeleteButton_Click))
                .CausesValidation = False
                .ID = String.Concat(Me.ID, "DeleteButton")
            End With
        End If
        Return mDeleteButton
    End Get
End Property

【问题讨论】:

  • onclick 中没有return。摆脱javascript:
  • return false; 将取消 JS 中的点击。
  • 在你的 javascript 确认函数中,你可以使用 stopPropagation 告诉 js 你已经处理了这个事件并且它不需要再冒泡了。如果你想停止一个事件的默认行为(即onclick),你可以使用preventDefault。这样,您将触发您选择的事件。

标签: javascript asp.net vb.net


【解决方案1】:

按以下方式更改您的代码。通过添加实际的条件语句和基于属性内条件的结果/动作。

Private mDeleteButton As CssButton
Private ReadOnly Property DeleteButton() As CssButton
Get

    If mDeleteButton Is Nothing Then
        mDeleteButton = New CssButton(ButtonImage.Cancel, "Delete")
        With mDeleteButton
            .Attributes.Add("onclick", "javascript: if(!confirm('Delete this future transaction?')) { return false; } else { //DO SOMETHING }")
            .AddClickHandler(New EventHandler(AddressOf DeleteButton_Click))
            .CausesValidation = False
            .ID = String.Concat(Me.ID, "DeleteButton")
        End With
    End If
    Return mDeleteButton
End Get
End Property

【讨论】:

    猜你喜欢
    • 2013-01-13
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 2020-10-16
    • 2019-10-21
    • 1970-01-01
    相关资源
    最近更新 更多