asp.net mvc - JQuery-validate submitHandler not working on MVC 4 -
i'm working on mvc4 view model , trying implement unobtrusive validation jquery. testing purposes, have implemented couple of custom validation rules , work when copy generated mvc code (see below) jsfiddle, not work @ within mvc project.
i know javascript working in mvc view model because alert('lol') indeed pop everytime page loads. submit handler , validation rules have no effect.
as note, following set true on web.config:
<add key="clientvalidationenabled" value="true" /> <add key="unobtrusivejavascriptenabled" value="true" />
also, these included scripts:
<script src="/scripts/jquery-1.7.1.js"></script> <script src="/scripts/jquery.unobtrusive-ajax.js"></script> <script src="/scripts/jquery.validate.js"></script> <script src="/scripts/jquery.validate.unobtrusive.js"></script> <script src="/scripts/jquery-ui-1.8.20.js"></script> <form action="/edit/edit" id="submitform" method="post" name="submitform"> <fieldset> <legend>details</legend> <table> <tr><th>site</th><th>account</th><th>metric name</th><th>value</th></tr> <tr><input data-val="true" data-val-number="the field siteid must number." data-val-required="the siteid field required." id="siteid" name="siteid" type="hidden" value="60" /></tr> <tr><input data-val="true" data-val-number="the field accountid must number." data-val-required="the accountid field required." id="accountid" name="accountid" type="hidden" value="14633" /></tr> <tr><input data-val="true" data-val-date="the field monthyear must date." data-val-required="the monthyear field required." id="monthyear" name="monthyear" type="hidden" value="2013-10-01 12:00:00 am" /></tr> <tr><input id="accountname" name="accountname" type="hidden" value="company1" /></tr> <tr><input id="sitename" name="sitename" type="hidden" value="auckland, new zealand" /></tr> <tr> <td>auckland, new zealand</td> <td>fonterra</td> <td>calls offered</td> <td><input class="text-box single-line" data-val="true" data-val-is="your high value needs greater low value." data-val-is-dependentproperty="handled" data-val-is-operator="greaterthan" data-val-is-passonnull="false" data-val-number="the field offered must number." data-val-required="the offered field required." id="offered" name="offered" type="text" value="8052.00" /></td> <td><span class="field-validation-valid" data-valmsg-for="offered" data-valmsg-replace="true"></span></td> </tr> <tr> <td>auckland, new zealand</td> <td>company 1</td> <td>agent incoming calls handled</td> <td><input class="text-box single-line" data-val="true" data-val-number="the field handled must number." id="handled" name="handled" type="text" value="7882.00" /></td> <td><span class="field-validation-valid" data-valmsg-for="handled" data-valmsg-replace="true"></span></td> </tr> <tr> <td>auckland, new zealand</td> <td>company 1</td> <td>calls transferred</td> <td><input class="text-box single-line" data-val="true" data-val-number="the field transferred must number." id="transferred" name="transferred" type="text" value="38.00" /></td> <td><span class="field-validation-valid" data-valmsg-for="transferred" data-valmsg-replace="true"></span></td> </tr> (...) (...) (...) <script> $(document).ready(function () { alert("lol"); $.validator.addmethod('lessthan', function (value, element, params) { var field_1 = $('input[name="' + params[0] + '"]').val(); return parseint(value) < parseint(field_1); }, "lessthan"); $("#submitform").validate({ errorelement: "span", rules: { offered: { required: true, digits: true, lessthan: ['handled'] }, handled: { required: true, digits: true } }, messages: { offered: "offered has >= handled", handled: "enter number of offered calls" }, submithandler: function (form) { // demo alert('valid form'); return false; } }); }); </script>
the answer question: asp.net mvc 3 unobtrusive validation - before validate event? answers title of question. can use submit event follows:
$('#submitform').submit(function () { if ($(this).valid()) { alert('the form valid'); //you can add return false here if want perfom manual validation , cancel submit } else { alert('the form not valid'); } });
for custom unobtrusive validation rule, need ensure input element has attribute data-val-lessthan="some validation message"
, need unobtrusive adapter well. add after $.validator.addmethod
:
$.validator.unobtrusive.adapters.add("lessthan", function (options) { options.messages["lessthan"] = options.message; });
Comments
Post a Comment