必须单击按钮两次才能在asp.net中触发回发

时间:2015-11-27 20:19:21

标签: c# asp.net

我的搜索按钮点击事件中有一些验证码,并且一直遇到问题需要点击两次才能工作。 Asp代码:

        <asp:Button ID="SearchButton" runat="server" Text="Search" Width="148px" OnClick="SearchButton_Click"  style="height: 35px" />

背后的代码

protected void SearchButton_Click(object sender, EventArgs e)
{
        string title = TitleSearch.Text;
        Regex rgx = new Regex("^[0-9A-Za-z ]+$");
        if (title != "" && !rgx.IsMatch(title))
        {
            ErrorLabel.Text = "Special characters are not allowed";
        }
        else
        {
             SearchButton.PostBackUrl = "results.aspx";

        }
}

1 个答案:

答案 0 :(得分:1)

文本框是否有回发?因为如果您更改文本框中的文本,它将在您离开文本框时进行回发。如果您单击该按钮,则会触发文本框的回发。

我会用java检查文本框

添加页面加载事件“将EditGroup更改为要检查的TextBoxName”

EditGroup.Attributes.Add("onchange", "return SomeTextChanged();");

这会在文本框中添加一个onchange事件,当你点击按钮时它将调用你的aspx页面中的java函数

然后在您的aspx页面中添加“再次将EditGroup更改为您要检查的TextBox的名称”

<script type="text/javascript">
function SomeTextChanged() {
    var Entered = document.getElementById('<%= EditGroup.ClientID %>');
    if (Entered.value != "" && !Entered.value.match("^[0-9A-Za-z ]+$"))
    {
        alert("Special characters are not allowed");
        document.getElementById('<%= EditGroup.ClientID %>').value = '';
    }
    else
    {
    }
}
</script>

因此,如果您输入不允许的内容,您将收到一条消息“不允许使用特殊字符” 这也将阻止您在执行按钮单击事件时执行其余代码页面。

你还需要清空文本框“我知道这可能不是最好的方法,但是如果你没有清空文本框,用户将再次单击该按钮,它将不会运行java代码,因为文本没有改变”

因此,如果文本是好的,则java脚本将不执行任何操作,并且按钮单击事件将触发