2017-03-09 154 views
-4

我在Razor TextBoxFor和PasswordFor,我想檢查使用js,如果他們都充滿了一些數據?如何檢查是否PasswordFor爲空

我的代碼工作,但只有在有兩個文本框的情況下。如何使它適用於PasswordFor?

@Html.TextBoxFor(m => m.Login, new {@class = "form-control", @id="tekst1"}) 
@Html.PasswordFor(m => m.Password, new {@class = "form-control", @id="tekst2"}) 


    <script type="text/javascript"> 

    function disableButtons() { 
     $("input[type='submit']").attr("disabled", true); 
    } 

    function enableButtons() { 
     $("input[type='submit']").attr("disabled", false); 
    } 

    $(document).ready(function() { 
     disableButtons(); 

     var $textInputs = $('input[type="text"],textInputs'); 
     $('input').on('change', function() { 

      var anyEmpty = $textInputs.filter(function() { return this.value == ""; }).length > 0; 
      if (!anyEmpty) { 
       enableButtons(); 
      } else { 
       disableButtons(); 
      } 
     }); 
    }); 
</script> 
+0

請向我們展示所有相關代碼(並正確格式化)。 – domsson

+0

這不是純粹的_html_。請修改您的標籤。 – Optio

+0

沒有'textbox'這樣的元素,所以你可以從你的選擇器中刪除它。然後,將'$ textInputs'的選擇器更改爲'$('input')'。密碼字段上有'type =「password」',顯然'type =「text」'不匹配。 –

回答

0

這剃刀代碼:

@Html.TextBoxFor(m => m.Login, new {@class = "form-control", @id="tekst1"}) 
@Html.PasswordFor(m => m.Password, new {@class = "form-control", @id="tekst2"}) 

呈現這樣的瀏覽器:

<input type="text" class="form-control" id="tekst1"> 
<input type="password" class="form-control" id="tekst2"> 

(很可能也呈現一個標籤,以及可能的其他屬性,但這些是重要的位)。

當您運行下面的代碼:

var $textInputs = $('input[type="text"],textInputs'); 

的jQuery看起來像元素:

<input type="text" (any other attributes)> 
<textInputs></textInputs> 

正如你所看到的,<input type="password" class="form-control" id="tekst2">不符合任何圖案。所以,在$textInputs唯一的一點是:

<input type="text" class="form-control" id="tekst1"> 

如果您輸入一個值,該輸入,然後過濾後:

$textInputs.filter(function() { return this.value == ""; }).length 

將等於0,因此anyEmptyfalseenableButtons將被調用。

如果你想找到所有input元素都是空的,不管他們type屬性,行更改爲:

var $textInputs = $('input'); 

或者,你可以做到這一切在一個單一的功能,如:

$(function() { 
    $(':input:not(:button):not(:submit)').on('change', function() { 
    $(':submit').prop('disabled', $(':input:not(:button):not(:submit)').filter(function(el) { 
     el.value === ''; 
    }).length > 0); 
    }); 
}); 

注意':input:not(:button):not(:submit)'是一個選擇,將匹配除了按鈕所有的表單元素,而':submit'比賽只能提交按鈕。請參閱jQuery's documentation on form selectors

+0

您應該開始學習ASP.NET MVC的標籤助手發出的內容,以及jQuery(和CSS)選擇器如何工作。相信我,從長遠看付出代價。 –

+0

它的工作原理。非常感謝 – Karolina