2016-06-30 65 views
0

希望有人可以幫助,我一直在瘋狂試圖弄清楚這一點。 我正在開發一個MVC 5應用程序。 我在我的viewmodel中創建了一個表單和表格。以下是我正在使用的2個文本框輸入。即使我沒有專門設置規則並且此規則不起作用,jquery驗證爲step = .10的標記輸入框添加了驗證規則。文本框給出了許多輸入錯誤,包括(1.1,1.2,1.3,但是輸入1.6遍)。錯誤是「請指定0.1的倍數」 另一個奇怪的是,如果從本地主機調試運行但是,當我發佈到託管服務器時,它根本不起作用。 10的soldbox步驟正常,沒有驗證。jquery驗證輸入號碼步伐= .01不工作

任何想法??

伊恩

@Html.TextBox("markup" + @item.ID, (item.markup == 0 ? new decimal(1.0) : item.markup), new { data_id = item.ID, style = "width:75px", @class = "markupbox form-control", @type = "number", @min = 0, @step = .10 }) 

@Html.TextBox("sold" + @item.ID, new decimal(0), new { data_id = item.ID, style = "width:75px", @class = "soldbox form-control", @type = "number", @min = 0, @max = 100, @step = 10 }) 

//JAVA SNIPPET 
$('#livecartitems').validate({ 
     errorClass: "text-danger" 
    }); 


     $('.soldbox').each(function() { 
     $(this).rules('add', { 
      min: 0, 
      max: 100, 
      messages: { 
       min: "must be >= 0", 
       max: "must be <= 100" 
      } 
     }) 
     $(this).rules('remove', 'step'); 
    }); 
}); 

// EDITTED JAVASCRIPT - 還不行

$('#livecartitems').validate({ 
     errorClass: "text-danger" 
    }); 
    $('.markupbox').rules('remove', 'step'); 

我只是想一個很簡單的例子... 相同的行爲。 1.5不起作用,但1.6次通過。很奇怪。接下來我將嘗試重新加載JS文件或將它們指向Google託管的JS腳本。

<form id="testform"> 
    @Html.TextBox("markup", new decimal(1.0), new { @style = "width:75px", @class = "markupbox form-control", @type = "number", @min = 0, @step = .10 }) 
</form> 

<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script> 
<script type="text/javascript"> 
$('#testform').validate({ 
    errorClass: "text-danger" 
}); 
</script> 

回答

0

我相信jQuery Validate插件會根據您的標記和輸入類型自動應用規則。您試圖刪除$(this).rules('remove', 'step');的規則,但是您將它應用於錯誤的輸入,因爲它被包裝在$('.soldbox').each(function() { ... }中。

$('.markupbox').rules('remove', 'step');將解決該問題(將其添加到範圍之外)。

至於沒有在生產中工作,沒有足夠的細節。確保jQuery和Validate插件正確加載並檢查控制檯是否有錯誤。編輯:在JSFiddle中進行了一些測試之後,我能夠複製你的步驟錯誤(< 1.5無效)。看看this question爲什麼發生這種情況。

不過,我可以使用.rules('remove', 'step')方法刪除step檢查。初始化插件時,您還可以通過規則step: false

Your best bet is to create a custom validator(例如,float-step和檢索值那裏,如果你做實際上需要驗證步長。

Here's a fiddle.

+0

嗨感謝響應。我其實是有早以及和它沒有工作,我只是更新了我的JavaScript,仍然無法正常工作,我將在單個頁面上進行測試,並嘗試查看是否可以重新加載JS腳本。 – ian486

+0

謝謝,請查看更新後的響應! – scottgearyau

+0

謝謝我很高興你能確認我所看到的,真是太令人沮喪了,希望他們能解決這個問題,我仍然無法獲得雷莫有規則去工作,但能夠添加步驟:錯誤的規則,並努力去除驗證。我不需要驗證,因爲我已經進行了正則表達式驗證,以防止更多2位小數。謝謝! – ian486