2016-06-30 8 views
0

Hoffentlich kann jemand helfen, ich bin verrückt geworden versuchen, dies herauszufinden. Ich arbeite an einer MVC 5-Anwendung. Ich habe ein Formular und eine Tabelle in meinem Viewmodel erstellt. Unten sind die 2 Eingabefelder, mit denen ich arbeite. Jquery Validation legt eine Validierungsregel für das Markup-Eingabefeld für step = .10 fest, obwohl ich die Regel nicht speziell festlege und diese Regel nicht funktioniert. Das Textfeld gibt einen Fehler für viele Eingaben einschließlich (1.1, 1.2, 1.3, aber Eingang 1.6 Pässe.) Der Fehler ist "Bitte geben Sie ein Vielfaches von 0,1" Die andere seltsame Sache ist, das funktioniert gut, wenn ein Lauf von localhost Debuggen Wenn ich jedoch auf einem gehosteten Server publiziere, funktioniert es überhaupt nicht. Der soldbox-Schritt von 10 funktioniert gut, es gibt keine Validierung darauf.Jquery Validate Eingabe Nummer Schritt = .01 funktioniert nicht

Irgendwelche Ideen ??

Ian

@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'); 
    }); 
}); 

// editierte JAVASCRIPT - Noch nicht funktioniert

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

Ich habe gerade versucht, ein sehr einfaches Beispiel ... gleiches Verhalten. 1,5 funktioniert nicht, aber 1,6 passiert. Sehr eigenartig. Als nächstes werde ich versuchen, die JS-Dateien neu zu laden oder sie auf von Google gehostete JS-Skripte zu verweisen.

<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> 

Antwort

0

Ich glaube, dass das jQuery Validate-Plugin automatisch Regeln basierend auf Ihrem Markup und Eingabe-Typ anwenden wird. Sie versuchen, die Regel mit $(this).rules('remove', 'step'); zu entfernen. Sie wenden sie jedoch auf die falsche Eingabe an, da sie in $('.soldbox').each(function() { ... } verpackt ist.

$('.markupbox').rules('remove', 'step'); wird das beheben (fügen Sie es außerhalb des Bereichs).

Für nicht in der Produktion arbeiten, gibt es nicht genug Details. Stellen Sie sicher, dass jQuery und das Validate-Plugin ordnungsgemäß geladen werden und überprüfen Sie die Konsole auf Fehler.

Edit: Nach ein wenig Testen in JSFiddle, kann ich Ihren Schritt Fehler replizieren (< 1.5 nicht gültig). Werfen Sie einen Blick auf this question, warum dies geschieht.

Ich konnte jedoch die step Überprüfung entfernen, obwohl, mit der .rules('remove', 'step') Methode, obwohl. Sie können auch die Regel step: false beim Initialisieren des Plugins durchlaufen.

Your best bet is to create a custom validator (zB float-step und die Werte dort abrufen, wenn Sie tatsächlich tun müssen, die Schrittgröße zu validieren.

Here's a fiddle.

+0

Hallo Danke für Ihre Reaktion. Ich hatte eigentlich, dass auch früher und es hat nicht Arbeit. ich meinen Javascript gerade aktualisiert. Immer noch nicht funktioniert. ich habe dies auf einer einzelnen Seite testen werde und auch versuchen, um zu sehen, ob ich das JS-Skripte nachladen. – ian486

+0

Danke, bitte einen Blick auf aktualisierte Antwort hat! – scottgearyau

+0

Danke Ich bin froh, dass Sie bestätigen konnten, was ich gesehen habe. War so frustrierend! Hoffe, dass sie dieses Problem beheben. Ich war immer noch nicht in der Lage, das Remo zu bekommen Regel zu arbeiten, war aber in der Lage, den Schritt hinzuzufügen: falsche Regel und das funktionierte, um die Validierung zu entfernen. Ich brauchte die Validierung nicht, da ich bereits eine Regex-Validierung hatte, um mehr als 2 Dezimalstellen zu vermeiden. Vielen Dank! – ian486