@ Html.TextBoxFor文本更改事件

时间:2016-11-30 08:17:56

标签: javascript c# jquery html asp.net-mvc

我有@Html.TextBoxFor如下:

@Html.TextBoxFor(u => u.SomeProperty, new { @class = "jtb", @id = "TrajName", placeholder = "Traj Name" })

现在我想要实现的是我想知道何时在输入的同时将新字符添加到此文本框中。 我想在此时将按钮状态更改为活动状态。我尝试了blurchange事件。但只有在焦点发生变化时才会触发它。

$(document).ready(function () {
    $('#TrajName').val("");
    $('#StartLocation').val("-Select Location-");
    $('#EndLocation').val("-Select Location-");

    document.getElementById("BtnAddTraj").disabled = true;

    $("#TrajectoryName").blur(function () {
        if ($('#TrajName').text != "")
            document.getElementById("BtnAddTraj").disabled = false;
        else
            document.getElementById("BtnAddTraj").disabled = true;
    });
});

我有一个场景,用户可以在输入一些文本后直接尝试点击按钮(即光标仍在文本框内,焦点不会改变)。

那么在添加角色而不是在焦点更改时触发时,是否有任何事件会提供实时触发?

1 个答案:

答案 0 :(得分:3)

您需要将事件处理程序绑定到keyup JavaScript事件。

此外,我建议您使用.prop来设置已禁用的属性。

请试试这个:

@Html.TextBoxFor(u => u.SomeProperty, new { @class = "jtb", @id = "TrajName", placeholder = "Traj Name" }) 

 $("#TrajectoryName").keyup(function () {
    if ($('#TrajName').val() != "")
        $("#BtnAddTraj").prop('disabled',false);
    else
        $("#BtnAddTraj").prop('disabled',true);
});

另一种解决方案是将input事件触发到TrajectoryName文本框。每次输入更改时都会触发。

$("#TrajectoryName").on('input',function () {
    if ($('#TrajName').val() != "")
        $("#BtnAddTraj").prop('disabled',false);
    else
        $("#BtnAddTraj").prop('disabled',true);
});