Merge branch 'master' of git.freeside.biz:/home/git/freeside
[freeside.git] / httemplate / elements / validate_password.html
index bd385a6..4057f5d 100644 (file)
@@ -20,9 +20,20 @@ should be the input id plus '_result'.
     'method' => 'POST', # important not to put passwords in url
 &>
 <SCRIPT>
-function add_password_validation (fieldid) {
+function add_password_validation (fieldid, submitid) {
   var inputfield = document.getElementById(fieldid);
-  inputfield.onchange = function () {
+  inputfield.onkeydown = function(e) {
+    var key;
+    if (window.event) { key = window.event.keyCode; }
+    else { key = e.which; } // for ff browsers
+    // some browsers allow the enter key to submit a form even if the submit button is disabled
+    // below prevents enter key from submiting form if password has not been validated.
+    if (key == '13') {
+      var check = checkPasswordValidation();
+      return check;
+    }
+  }
+  inputfield.onkeyup = function () {
     var fieldid = this.id+'_result';
     var resultfield = document.getElementById(fieldid);
     if (this.value) {
@@ -36,11 +47,14 @@ function add_password_validation (fieldid) {
             var validimg = '<IMG SRC="<% $p %>images/tick.png" style="width: 1em; display: inline-block; padding-right: .5em">';
             if (result.valid) {
               resultfield.innerHTML = validimg+'<SPAN STYLE="color: green;">Password valid!</SPAN>';
+              if (submitid){ document.getElementById(submitid).disabled = false; }
             } else if (result.error) {
               resultfield.innerHTML = errorimg+'<SPAN STYLE="color: red;">'+result.error+'</SPAN>';
+              if (submitid){ document.getElementById(submitid).disabled = true; }
             } else {
               result.syserror = result.syserror || 'Server error';
               resultfield.innerHTML = errorimg+'<SPAN STYLE="color: red;">'+result.syserror+'</SPAN>';
+              if (submitid){ document.getElementById(submitid).disabled = true; }
             }
           }
         }
@@ -50,7 +64,8 @@ function add_password_validation (fieldid) {
     }
   };
 }
-add_password_validation('<% $opt{'fieldid'} %>');
+
+add_password_validation('<% $opt{'fieldid'} %>', '<% $opt{'submitid'} %>');
 </SCRIPT>
 
 <%init>