@Html.TextBoxFor 文本更改事件

ViV*_*iVi 4 html javascript c# asp.net-mvc jquery

我有一个@Html.TextBoxFor如下:

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

现在我想要实现的是我想知道在输入新字符的同时将新字符添加到该文本框中。我想此时将按钮状态更改为活动状态。我试过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;
    });
});
Run Code Online (Sandbox Code Playgroud)

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

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

Mih*_*nut 5

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

此外,我建议您使用.propfor set disabled 属性。

请试试这个:

@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);
});
Run Code Online (Sandbox Code Playgroud)

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

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