|
269 | 269 | } |
270 | 270 | }; |
271 | 271 |
|
| 272 | + /** |
| 273 | + * Add Message Element in config phase |
| 274 | + * When you need custom your messageElement |
| 275 | + * NODE: this funtion & and `message-id` attribute, have similar purpose. |
| 276 | + * This function will help you add your `messageElement` automatically instead of pre-defined. |
| 277 | + * @param element |
| 278 | + */ |
| 279 | + this.addMsgElement = function(element) { |
| 280 | + return element.after('<span></span>'); |
| 281 | + }; |
| 282 | + |
| 283 | + /** |
| 284 | + * Add Message Element in config phase |
| 285 | + * When you need custom your messageElement |
| 286 | + * NODE: this funtion & and `message-id` attribute, have similar purpose. |
| 287 | + * This function will help you add your `messageElement` automatically instead of pre-defined. |
| 288 | + * @param element |
| 289 | + */ |
| 290 | + this.getMsgElement = function(element) { |
| 291 | + return element.next(); |
| 292 | + }; |
| 293 | + |
272 | 294 | /** |
273 | 295 | * $get |
274 | 296 | * @returns {{setErrorHTML: *, getErrorHTML: Function, setSuccessHTML: *, getSuccessHTML: Function, setExpression: *, getExpression: Function, setDefaultMsg: *, getDefaultMsg: Function, checkValid: Function, validate: Function, reset: Function}} |
|
293 | 315 | validCallback: this.validCallback, |
294 | 316 | invalidCallback: this.invalidCallback, |
295 | 317 | resetCallback: this.resetCallback, |
296 | | - reset: this.reset |
| 318 | + reset: this.reset, |
| 319 | + addMsgElement: this.addMsgElement, |
| 320 | + getMsgElement: this.getMsgElement |
297 | 321 | }; |
298 | 322 | }]; |
299 | 323 | } |
|
383 | 407 | var messageElem; |
384 | 408 |
|
385 | 409 | if (messageId || validationGroup) messageElem = angular.element(document.querySelector('#' + (messageId || validationGroup))); |
386 | | - else messageElem = element.next(); |
| 410 | + else messageElem = $validationProvider.getMsgElement(element); |
387 | 411 |
|
388 | 412 | if (element.attr('no-validation-message')) { |
389 | 413 | messageElem.css('display', 'none'); |
390 | 414 | } else if ($validationProvider.showSuccessMessage && messageToShow) { |
391 | | - messageElem.html('').append($compile($validationProvider.getSuccessHTML(messageToShow))(scope)); |
| 415 | + messageElem.html('').append($compile($validationProvider.getSuccessHTML(messageToShow, element, attrs))(scope)); |
392 | 416 | messageElem.css('display', ''); |
393 | 417 | } else { |
394 | 418 | messageElem.css('display', 'none'); |
|
421 | 445 | var messageElem; |
422 | 446 |
|
423 | 447 | if (messageId || validationGroup) messageElem = angular.element(document.querySelector('#' + (messageId || validationGroup))); |
424 | | - else messageElem = element.next(); |
| 448 | + else messageElem = $validationProvider.getMsgElement(element); |
425 | 449 |
|
426 | 450 | if (element.attr('no-validation-message')) { |
427 | 451 | messageElem.css('display', 'none'); |
428 | 452 | } else if ($validationProvider.showErrorMessage && messageToShow) { |
429 | | - messageElem.html('').append($compile($validationProvider.getErrorHTML(messageToShow))(scope)); |
| 453 | + messageElem.html('').append($compile($validationProvider.getErrorHTML(messageToShow, element, attrs))(scope)); |
430 | 454 | messageElem.css('display', ''); |
431 | 455 | } else { |
432 | 456 | messageElem.css('display', 'none'); |
|
603 | 627 | /** |
604 | 628 | * Default Valid/Invalid Message |
605 | 629 | */ |
606 | | - if (!(messageId || validationGroup)) element.after('<span></span>'); |
| 630 | + if (!(messageId || validationGroup)) $validationProvider.addMsgElement(element); |
607 | 631 |
|
608 | 632 | /** |
609 | 633 | * Set custom initial validity |
|
629 | 653 | ctrl.$setValidity(ctrl.$name, undefined); |
630 | 654 | ctrl.$render(); |
631 | 655 | if (messageId || validationGroup) angular.element(document.querySelector('#' + (messageId || validationGroup))).html(''); |
632 | | - else element.next().html(''); |
| 656 | + else $validationProvider.getMsgElement(element).html(''); |
633 | 657 |
|
634 | 658 | if ($validationProvider.resetCallback) $validationProvider.resetCallback(element); |
635 | 659 | }); |
|
724 | 748 | } else if (ctrl.$pristine) { |
725 | 749 | // Don't validate form when the input is clean(pristine) |
726 | 750 | if (messageId || validationGroup) angular.element(document.querySelector('#' + (messageId || validationGroup))).html(''); |
727 | | - else element.next().html(''); |
| 751 | + else $validationProvider.getMsgElement(element).html(''); |
728 | 752 | return; |
729 | 753 | } |
730 | 754 | checkValidation(scope, element, attrs, ctrl, validation, value); |
|
737 | 761 | attrs.$observe('noValidationMessage', function(value) { |
738 | 762 | var el; |
739 | 763 | if (messageId || validationGroup) el = angular.element(document.querySelector('#' + (messageId || validationGroup))); |
740 | | - else el = element.next(); |
| 764 | + else el = $validationProvider.getMsgElement(element); |
741 | 765 | if (value === 'true' || value === true) el.css('display', 'none'); |
742 | 766 | else if (value === 'false' || value === false) el.css('display', 'block'); |
743 | 767 | }); |
|
0 commit comments