【问题标题】:Passing script after validation验证后传递脚本
【发布时间】:2014-03-17 08:59:54
【问题描述】:

我正在尝试验证所有文本框,以确保在允许用户继续之前将它们全部填满。我有 2 个按钮。第一个按钮发送到 javascipt 进行验证,第二个按钮发送到 vb.net 以上传文件并将详细信息保存到数据库中。如果我手动单击它们,每个按钮都可以正常工作。问题是,我不能让他们一起工作。 (IE。按第一个按钮启动javascript检查,如果成功,调用按钮2启动vb.net脚本添加到数据库并重定向。)

这是验证脚本(在 javascript 中)

function fnCheck() {

        if ((document.getElementById("price").value).length > 0) {
            var r = confirm("Are you sure the details are correct?");
            if (r == true) {
                document.getElementById("Submit1");
            }
            else {
                x = "You pressed Cancel!";
            } 

        }


    }

这是我的 vb.net 文本框 + 代码示例(不使用代码隐藏)

<script runat="server">

    Sub SubmitButton_Click(Source As Object, e As EventArgs)

        Response.Redirect("../services.html")
    End Sub

</script>

<asp:TextBox ID="price" runat="server" CausesValidation="true"></asp:TextBox>

<input id="Submit1" runat="Server" onserverclick="SubmitButton_Click" 
                            type="submit" value="Upload Files" />
<asp:Button ID="Button5" runat="server" Text="1" 
                                OnClientClick="javascript:return fnCheck()"/>

请帮忙。谢谢!

【问题讨论】:

  • fnCheck() 意味着什么都不返回?
  • fnCheck() 假设调用 Submit1 按钮 "document.getElementById("Submit1");"当用户单击确定以继续文件上传并添加到数据库时。我仍在弄清楚如何作为 document.getElementById("Submit1");没有带我去那里
  • 我对 vb.net 语言不太熟悉,但从脚本的角度来看,document.getElementById("Submit1") 只会返回 DOM 元素而不提交表单。

标签: javascript asp.net vb.net


【解决方案1】:

虽然我不熟悉 vb.net 精神,但如果您尝试在 &lt;input&gt; 元素上模拟点击事件,请尝试以下操作:

将输入类型更改为按钮:

<input id="Submit1" runat="Server" onserverclick="SubmitButton_Click" 
                        type="button" value="Upload Files" />

在按钮元素上调用click() 方法:

function fnCheck() {

    if ((document.getElementById("price").value).length > 0) {
        var r = confirm("Are you sure the details are correct?");
        if (r == true) {
            document.getElementById('Submit1').click();
        }
        else {
            x = "You pressed Cancel!";
        } 

    }


}

【讨论】:

  • 感谢您的回复。我已将输入更改为 ID 为“Submit1”的按钮,将代码更改为 sub submit1_click(sender as object, e as system.eventargs) 处理 submit1.click,并将 javascript 更改为 document.getelementbyid('submit1')。点击();当我手动按下它们时,我的按钮仍然可以工作,但是如果它通过 fnCheck() 则它不起作用.. 还有其他想法吗?谢谢
  • 您确定调用了fnCheck() 方法吗?添加一些跟踪代码以检查应用程序是否进入fnCheck() 函数。
  • 它正在工作,因为确认弹出窗口正在工作。如果我将 document.getelement 更改为重定向它也可以工作......可能会在“document.getElementById”中丢失一些东西......
【解决方案2】:

如果您要进行回发,只需调用 __doPostback:

function fnCheck() {

        if ((document.getElementById("price").value).length > 0) {
            var r = confirm("Are you sure the details are correct?");
            if (r == true) {
                __doPostBack("Submit1", "");
            }
            else {
                x = "You pressed Cancel!";
            } 

        }


}

【讨论】:

  • 嗨,我以前试过,但不知何故,它只是刷新了页面。没有其他事情发生。甚至没有重定向..
【解决方案3】:

相当老的问题,但仍然适用于其他任何人..

检查页面是否继承了母版页,如果是,按钮的id“Submit1”将在客户端更改为“contentplaceholder__Submit1”。

如果您想防止这种情况发生,请将其添加到您的提交按钮代码中:

ClientIDMode="Static"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 2017-05-26
    • 2010-10-23
    • 1970-01-01
    相关资源
    最近更新 更多