2017-01-24 3 views
2

Ich habe ein Netresults-Formular auf meiner Webseite, das ich vorbelegen muss. Das Formular wird mit JavaScript in die Seite eingefügt und ich kann die Formularfelder im Quellcode nicht sehen.JQuery - Formularfeld auf Formular 3rd Party ausfüllen

Ich würde den folgenden Code verwenden, wenn das Formular auf meiner Seite war, aber da es nicht ist, habe ich keine Ahnung, wie Sie die Felder ausrichten. Kann jemand helfen?

var keywords = getUrlParameter('keywords'); 

$('input[name=netres-keywords]').val(keywords); 

netresults Die Form wird mit diesem Code eingefügt:

(function() { 
    var $__MAForm; 
    ($__MAForm =function(){ 
     if(typeof($__MA)=="undefined"){ 
      return window.setTimeout($__MAForm,50); 
     }else{ 
      $__MA.addMAForm("43788303-2b62-4774-ad0f-63542e3ed92a", "forms.example.com"); 
     } 
    })(); 
})(); 
+0

Können Sie gehören wie die eingelegte Formular in HTML erscheint auf der Seite ein * Inspect Element *, indem Sie? – Santi

+0

könnte tun, aber es gibt eine Menge Formulare auf vielen Seiten, so wirklich wollen, dass, wenn möglich zu vermeiden – LeeTee

+0

Wir brauchen nicht die vollständige HTML von jeder einzelnen Seite, aber ich bin mir nicht sicher, wie Sie uns erwarten, ein zu füllen Form, von der wir nichts wissen. – Santi

Antwort

2

Dies kann die Verwendung eines Mutation Observer erfordern.

Ein Mutationsbeobachter wird nach Änderungen am DOM (hinzugefügte Elemente usw.) suchen, und wir können damit ein Ereignis auslösen. Der folgende Code ändert den Wert eines Eingangs mit dem Namen netres-keywords, sobald ein neues <form> Element zur <body> hinzugefügt wird.

Im Beispiel JSFiddle am Ende dieses Beitrags habe ich eine Schaltfläche erstellt, die ein Formular simuliert, das der Seite hinzugefügt wird. Wie Sie sehen können, wird das Textfeld vorbelegt.

EXAMPLE JSFIDDLE

$(document).ready(function() { 
 

 
    var keywords = "this is a test keyword"; 
 
    var formCount = $("form").length; 
 

 
    var observer = new MutationObserver(function() { 
 
     var newFormCount = $("form").length; 
 
     if (newFormCount > formCount) { 
 
      $('input[name=netres-keywords]').last().val(keywords); 
 
     } 
 
    }); 
 

 
    $("button").click(function() { 
 
     $form = $("<form>").html("<h1>New form:</h1><input type='text' name='netres-keywords'>"); 
 
     $("body").append($form); 
 
    }); 
 
    
 
    var observerConfig = { 
 
     attributes: true, 
 
     childList: true, 
 
     characterData: true 
 
    }; 
 
    
 
    var targetNode = document.body; 
 
    observer.observe(targetNode, observerConfig); 
 
});
form { 
 
    padding: 10px; 
 
    border: 1px solid red; 
 
    margin-bottom: 20px; 
 
} 
 

 
h1 { 
 
    margin: 0; 
 
    padding: 0; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button> 
 
    SIMULATE ADDING FORM 
 
</button> 
 
<br> 
 
<br>

+0

Danke, ich werde dies versuchen – LeeTee

+1

@LeeTee Bitte beachten Sie meine aktualisierte Code. – Santi

+0

@LeeTee Ich bemerke, dass Sie Ihrer Frage ein Kopfgeld hinzugefügt haben. Gibt es einen Grund, warum die Antwort, die ich Ihnen gegeben habe, nicht für Sie funktioniert? – Santi