2013-02-12 52 views
0

我的頁面上有jQuery驗證(使用twitter引導),我使用以下ASP.NET MVC註釋。從Jquery中的元素中移除驗證

[DisplayName("Text)"),Range(100,35000)] 
    public decimal Field { get; set; } 

元素與補充說:

@Bootstrap.TextBoxFor(x => x.Field, htmlAttributes: new {@class="ignore",id="field" }) 

的問題是,我想允許在該領域的空白值,但保留範圍驗證的情況下,一個非空的值寫入。

這是我的javascript代碼:

$("#Field").on("keyup", function (e) { 
     e.preventDefault(); 
     if ($(this).val() == "") { 
      $(this).removeClass("input-validation-error"); 
      $(this).addClass("valid"); 
      $(this).next().html(""); 
      $(this).parent().parent().removeClass("error"); 
     } 
    }) 

    $.validator.setDefaults({ ignore: ".ignore" }); 
+0

** **報價:_「我希望允許在該領域的空白值,但保留範圍驗證在一個非空值被寫入案」 _〜驗證input元素,但不能使它'required'簡單意味着在保持'range'規則的同時去除'required'規則。 – Sparky 2013-02-12 17:10:38

+0

另外,你爲什麼要創建一個'keyup'函數來完成插件已經做的或者能夠做的一大堆事情呢? – Sparky 2013-02-12 17:13:27

回答

0

我找到了解決辦法...如果你把它可爲空的作品類型...

[DisplayName("Text)"),Range(100,35000)] 
public decimal? Field { get; set; } 

謝謝您的幫助!

-2

我發佈你 '需要' 驗證的黑客。 這個想法是在字段爲空時返回所需的相反值,否則如果值超出範圍則返回true。也許你會需要太多的個性化需要默認消息,爲UX的緣故

$("form").validate({ 
rules: { 
    field1: { 
     required: function() { 
     return (
           $("#fld1").val() != "" || 
           ($("#fld1").val() != "" && 
           (
           $("#fld1").val() < minVal || 
           $("#fld1").val() > maxVal 
           )) 
        ); 
     } 
    } 
},.... 
+0

爲什麼你要爲插件中已存在的規則編寫一個全新的函數? – Sparky 2013-02-12 17:29:59

+0

實際上,沒有驗證函數只在值不爲空時才檢查範圍。 – kante 2013-02-13 09:21:43

+0

[不,實際上有一個叫做'range'的規則](http://jsfiddle.net/tLG9v/)。即使'required'不是'true',所有Validate Plugin規則仍然可以正常工作。 [見:http://jsfiddle.net/tLG9v/](http://jsfiddle.net/tLG9v/) – Sparky 2013-02-13 15:38:17