2016-05-17 6 views
1

Lassen Sie mich damit beginnen, dass dies mein zweiter Tag ist, lernen jQuery, also bin ich sehr viel Anfänger.jQuery ändern Ereigniscode läuft nicht Eventkonflikt

Ich habe eine Dokument-Ready-Funktion geschrieben und alle Komponenten funktionieren außer der Funktion countryField.change, die ich geschrieben habe. Ich bin mir ziemlich sicher, dass die Webanwendung bereits eine Änderungsfunktion für dieses Feld hat und ich bin mir nicht sicher, ob es zwei gleiche Ereignisse auf einem Feld geben kann. Wenn ich sage, dass es nicht funktioniert, setze ich im Chrome-Debugger einen Haltepunkt, und die Funktion wird nicht eingegeben.

Vielleicht muss ich das vorhandene Ereignis vorübergehend anhalten, meinen Code ausführen und das Standardereignis erneut aktivieren?

Jede Hilfe wäre willkommen. Vielen Dank.

$(document).ready(function(){ 
    var submitReady = true; 
    var phoneField = $("p.phone").find("input"); 
    var phoneExt = $("p.Ext").find("input"); 
    var countryField = $("p.country").find("input"); 
    var stateField = $("p.state").find("input"); 
    var provinceField = $("p.Province").find("input"); 

    var regex = /^\([2-9][0-9]{2}\)\s+[2-9][0-9]{2}\-[0-9]{4}$/; 

    phoneField.mask('(000) 000-0000', {placeholder: "(###) ###-####"}); 
    phoneExt.mask('00000', {placeholder: "#####"}); 

    $('#pardot-form').submit(function() { 
     // DO STUFF 
     if (submitReady) { 
      if (phoneExt.val() != "") { 
       phoneField.val(phoneField.val() + ' x' + phoneExt.val()); 
       return true; 
      } 
     } 
     else { 
      return false; 
     } 
    }); 
    phoneField.focusout(function() { 
     if (regex.test($(this).val())) { 
      submitReady = true; 
      return true; 
     } 
     else { 
      $(".form-field.phone").after("<p class='tempError error no-label'>Please Enter a valid phone number: (###) ###-####</p>"); 
      submitReady = false; 
     } 
    }); 
    phoneField.focus(function() { 
     $(".tempError").remove(); 
    }); 

    countryField.change(function() { 
     phoneField.val(""); 
     provinceField.val(""); 
     stateField.val(""); 
     submitReady = true; 
    }); 
}); 
+0

Sie mehrere Event-Handler auf ein Element haben kann. Sie werden in der Reihenfolge ausgeführt, in der sie definiert wurden. Das einzige Problem wäre, wenn einer von ihnen das Formular einreicht, das die Seite neu lädt und alle späteren Handler vom Laufen abhält. – Barmar

+0

Vielen Dank, beide Ergebnisse in submit, also sollte ich in der Lage sein, meine Veranstaltung zu definieren? Jetzt muss ich irgendwie herausfinden, warum es nicht feuert. –

+0

Stellen Sie sicher, dass der Selektor etwas zusammenbringt. Was ist countryField.length? – Barmar

Antwort

1

können Sie versuchen,

$("p.country").change(function() { 
    phoneField.val(""); 
    provinceField.val(""); 
    stateField.val(""); 
    submitReady = true; 
}); 
Verwandte Themen