Commit ce10b6f8b46add764786e509296568ff5b01dc8f
1 parent
64d48bf4
Fixed problem with not clearing watermarks on ajax form submit.
Showing
1 changed file
with
43 additions
and
47 deletions
... | ... | @@ -447,53 +447,49 @@ $.fn.watermark = function (text, options) { |
447 | 447 | // we need to replace the form's submit function with our own |
448 | 448 | // function. Otherwise watermarks won't be cleared when the form |
449 | 449 | // is submitted programmatically. |
450 | - if (this.form) { | |
451 | - var form = this.form, | |
452 | - $form = $(form); | |
453 | - | |
454 | - if (!$form.data(dataFormSubmit)) { | |
455 | - $form.submit($.watermark.hideAll); | |
456 | - | |
457 | - // form.submit exists for all browsers except Google Chrome | |
458 | - // (see "else" below for explanation) | |
459 | - if (form.submit) { | |
460 | - $form.data(dataFormSubmit, form.submit); | |
461 | - | |
462 | - form.submit = (function (f, $f) { | |
463 | - return function () { | |
464 | - var nativeSubmit = $f.data(dataFormSubmit); | |
465 | - | |
466 | - $.watermark.hideAll(); | |
467 | - | |
468 | - if (nativeSubmit.apply) { | |
469 | - nativeSubmit.apply(f, Array.prototype.slice.call(arguments)); | |
470 | - } | |
471 | - else { | |
472 | - nativeSubmit(); | |
473 | - } | |
474 | - }; | |
475 | - })(form, $form); | |
476 | - } | |
477 | - else { | |
478 | - $form.data(dataFormSubmit, 1); | |
479 | - | |
480 | - // This strangeness is due to the fact that Google Chrome's | |
481 | - // form.submit function is not visible to JavaScript (identifies | |
482 | - // as "undefined"). I had to invent a solution here because hours | |
483 | - // of Googling (ironically) for an answer did not turn up anything | |
484 | - // useful. Within my own form.submit function I delete the form's | |
485 | - // submit function, and then call the non-existent function -- | |
486 | - // which, in the world of Google Chrome, still exists. | |
487 | - form.submit = (function (f) { | |
488 | - return function () { | |
489 | - $.watermark.hideAll(); | |
490 | - delete f.submit; | |
491 | - f.submit(); | |
492 | - }; | |
493 | - })(form); | |
494 | - } | |
495 | - } | |
496 | - } | |
450 | + if (this.form) { | |
451 | + var form = this.form, | |
452 | + $form = $(form); | |
453 | + | |
454 | + if (!$form.data(dataFormSubmit)) { | |
455 | + $form.submit($.watermark.hideAll); | |
456 | + | |
457 | + // form.submit exists for all browsers except Google Chrome | |
458 | + // (see "else" below for explanation) | |
459 | + if (form.submit) { | |
460 | + $form.data(dataFormSubmit, form.onsubmit || 1); | |
461 | + | |
462 | + form.onsubmit = (function (f, $f) { | |
463 | + return function () { | |
464 | + var nativeSubmit = $f.data(dataFormSubmit); | |
465 | + $.watermark.hideAll(); | |
466 | + if (nativeSubmit instanceof Function) { | |
467 | + nativeSubmit(); | |
468 | + } else { | |
469 | + eval(nativeSubmit); | |
470 | + } | |
471 | + }; | |
472 | + })(form, $form); | |
473 | + } else { | |
474 | + $form.data(dataFormSubmit, 1); | |
475 | + | |
476 | + // This strangeness is due to the fact that Google Chrome's | |
477 | + // form.submit function is not visible to JavaScript (identifies | |
478 | + // as "undefined"). I had to invent a solution here because hours | |
479 | + // of Googling (ironically) for an answer did not turn up anything | |
480 | + // useful. Within my own form.submit function I delete the form's | |
481 | + // submit function, and then call the non-existent function -- | |
482 | + // which, in the world of Google Chrome, still exists. | |
483 | + form.submit = (function (f) { | |
484 | + return function () { | |
485 | + $.watermark.hideAll(); | |
486 | + delete f.submit; | |
487 | + f.submit(); | |
488 | + }; | |
489 | + })(form); | |
490 | + } | |
491 | + } | |
492 | + } | |
497 | 493 | } |
498 | 494 | |
499 | 495 | $.watermark._show($input); | ... | ... |
Please
register
or
login
to post a comment