【问题标题】:Confirmation box javascript确认框 javascript
【发布时间】:2011-11-17 16:38:56
【问题描述】:

问题:

我有一个确认框,只要我点击保存按钮就会弹出。当我单击“确定”时,它可以很好地保存数据。但是当我单击取消时,它不会取消更改。相反,它会保存它们。你能帮我解决这个问题吗:

这里是它的 JavaScript:

/
<asp:Button ID="view_btn_save" Text="Save" ValidationGroup="view" OnClick="view_btn_save_click"
                        OnClientClick="Validate_view()" runat="server"
                        />                        
                </td>
                <script type="text/javascript">
                    function Validate_view() {
                        var value = document.getElementById('<%=view_txt_name.ClientID%>').value;
                        var value2 = document.getElementById('<%=view_txt_title.ClientID%>').value;
                        var value3 = document.getElementById('<%=view_txt_description.ClientID%>').value;
                        var value4 = document.getElementById('<%=view_txt_pixelwidth.ClientID%>').value;
                        var value5 = document.getElementById('<%=view_txt_pixelheight.ClientID%>').value;

                        if (value == '' || value2 == '' || value3 == '' || value4 == '' || value5 == '') {
                            return alert('Please enter the missing fields');
                        }                        
                        else {
                            return confirm('Confirm changes?');
                        }
                    }

【问题讨论】:

    标签: c# javascript asp.net


    【解决方案1】:

    您需要在OnClientClick 声明中添加return 语句:

    OnClientClick="return Validate_view();"
    

    如果您显示警报,我会将您的代码更改为:

    alert("...");
    return false;
    

    编辑:这是一个完整的例子

    <script type="text/javascript"> 
        function Validate_view() { 
            var value = document.getElementById('<%=view_txt_name.ClientID%>').value; 
            var value2 = document.getElementById('<%=view_txt_title.ClientID%>').value; 
            var value3 = document.getElementById('<%=view_txt_description.ClientID%>').value; 
            var value4 = document.getElementById('<%=view_txt_pixelwidth.ClientID%>').value; 
            var value5 = document.getElementById('<%=view_txt_pixelheight.ClientID%>').value; 
    
            if (value == '' || value2 == '' || value3 == '' || value4 == '' || value5 == '') { 
                alert('Please enter the missing fields'); 
                return false;
            }                         
            else { 
                return confirm('Confirm changes?'); 
            } 
        } 
    </script>
    <asp:Button ID="view_btn_save" runat="server" Text="Save" OnClientClick="return Validate_view()" OnClick="view_btn_save_click" />                         
    

    【讨论】:

    • 现在,正在发生的事情是,当我在警报框中单击“确定”后,它会运行一个存储过程来保存不应该的数据。它应该只在 return confirm(...) 为真时执行该操作。关于如何阻止这种情况的任何建议?
    • 是的,您只需在OnClientClick 中添加return 语句,并在显示警报后返回false。你需要的一切都应该在我的回答中。
    • 这是在我试用了您的代码后发生的。我添加了完全相同的东西,但它给了我上面提到的错误。
    • 我更新了一个完整的例子。尝试从按钮中删除 ValidationGroup。验证可能会覆盖OnClientClick
    • 有效!非常感谢!!!我正在做返回警报,然后返回错误。但它现在可以工作了,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多