2016-11-30 99 views
3

我有一個@Html.TextBoxFor如下:@ 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

使用'.keyup()'。 –

+0

'#TrajName'是一個輸入,所以它的'if($('#TrajName')。val()!=「」)' –

+0

@StephenMuecke:謝謝。有效。我有個疑問。 textboxfor的'.val()'和'.text'將返回相同的東西嗎?即文本框的文本值 – ViVi

回答

2

您需要將事件處理程序綁定到JavaScript事件keyup

此外,我建議您使用.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); 
}); 
+0

非常感謝。這兩個解決方案工作正常 – ViVi