如果单击按钮,如何停止执行文本框事件更改的方法

时间:2015-09-18 07:47:08

标签: javascript c# asp.net

即时清除文本框中的所有控件已更改事件但是我需要从文本框中退出并直接单击按钮。不应该触发重置/清除方法。我点击按钮时使用java脚本传递值。如果单击按钮,则值不会更改为true。如果直接在文本框单击按钮之后,则不会触发按钮事件。如果自动回发在文本框中生效,它的工作正常,但我需要邮箱真实。

aspx.cs

 protected void txtRegno_TextChanged(object sender, EventArgs e)
    {

        if (HiddenField1.Value == "false") // No Button1_Click
        {
            Clear();
        }
        else // button1_click
        {
            HiddenField1.Value = "true"; // reset the hiddenfield1 value
        }


    }

的javascript

 <script type="text/javascript">
    function setButtonClicked() {
        document.getElementById('<%= HiddenField1.ClientID %>').value = 'true';
    }
</script>

aspx按钮和文本框

  <asp:TextBox ID="txtRegno" runat="server" OnTextChanged="txtRegno_TextChanged" AutoPostBack="true"
                MaxLength="10"></asp:TextBox>
  <asp:HiddenField ID="HiddenField1" runat="server" Value="false" />
            <asp:Button ID="btnSubmit" runat="server" Text="Check" 
            onclick="btnSubmit_Click" OnClientClick="setButtonClicked();"  />

2 个答案:

答案 0 :(得分:1)

我不知道这是&#34;正确的&#34;回答,但这对我有用。

我创建了一个名为isSave的全局变量,并最初将其设置为false。然后在mouseover事件中,我将该变量设置为true。像这样......

$list = file_get_contents('ips.txt');

// convert to array
$array_list = (explode(" ",$list));

// Get user's ip
$value = $_SERVER['REMOTE_ADDR'];

if(!isset($array_list[$value])){

    $values = array_count_values($array_list); 
    $count = $values[$value];

    if ($count > 2) {
        return 'Too many lookup attempts, please try again in 24    hours click <a href="/">HERE</a> to return home';
        }

    }

    else {
        // run the ok request
    }

然后在调用文本字段的onChange的函数中,我检查了值并返回了该值。

var isSave = false;

$(document).ready(function () {
    $("#buttonDiv").on("mouseover",
        function () {
            window.onbeforeunload = null;
            isSave = true;
        });
    $("#buttonDiv").on("mouseout",
        function () {
            window.onbeforeunload = Changes;
            isSave = false;
        });
})

如果你需要函数不处理任何东西,只需将它全部包装在if语句中。

function txtExpChange(txt)
{
    // Do stuff

    return isSave;
}

要点是,由于鼠标悬停与onchange事件分开发生,因此它将独立设置变量。我猜想的另一个缺点是,当你将鼠标悬停在包含按钮的div上时,它们是否会击中Tab键。

我希望有更好的解决方案,但在找到之前,这将对我有用。

祝你好运!

答案 1 :(得分:0)

当您专注于文本框txtRegno,然后在按钮上单击鼠标时,OnTextChanged事件在OnClientClick事件之前被触发,因此回发发生并且提交表单时隐藏字段设置为false,这是初始值。

当您查看呈现页面的源代码时,您将看到OnTextChanged事件及其处理程序转换为javascript change事件,该事件在离开输入框后被触发。

您需要自己处理客户端文本框的change事件。