2016-04-24 11 views
12

Ich habe das folgende Javascript bekommt, die ein Formular in eine versteckte div auf der Seite lädt und die Shows des divFormular zeigt nicht in IE

function load() { 
    ...stuff to get date and id... 
    var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
     if (xhttp.readyState==4&&xhttp.status==200) { 
      document.getElementById("PopupDiv").innerHTML = xhttp.responseText; 
      document.getElementById("PopupDiv").removeAttribute("hidden"); 
      alert(xhttp.responseText); 
     } 
    }; 
    xhttp.open("GET", "Object?date=" + date + "&id=" + id, true); 
    xhttp.send(); 
} 

dies eine Teilansicht lädt mit dem folgenden:

<h2>@Model.date</h2> 
<h2>@Model.id</h2> 
<div id="OptionsDiv"> 
    @using (Html.BeginForm("Confirm", "Plan",FormMethod.Post,new { id = "OptionsForm" })) 
    { 
     @Html.HiddenFor(x => x.date) 
     @Html.HiddenFor(x => x.id) 
     @Html.LabelFor(x => x.options) 
     @Html.DropDownListFor(x => x.options, Model.optionsDropdown) 
     <br /> 
     @Html.LabelFor(x => x.comment) 
     @Html.TextBoxFor(x => x.comment) 
     <br /> 
     <input type="submit" value="Submit"/> 
    } 
</div> 
<p>test after the div</p> 

Wenn das JavaScript-Ereignis ausgelöst wird, wird es beim Anzeigen des DOM-Explorers korrekt geladen, aber das Formular wird nicht angezeigt. Info davor und danach wird angezeigt, aber nichts in der Form.

der Alarm aus der Antwort enthält:

<h2>5/12/2016 12:00:00 AM</h2> 

<h2>13</h2> 

<div id="OptionsDiv"> 

<form action="/Plan/Confirm" id="PlanOptionsForm" method="post"><input data-val="true" data-val-date="The field date must be a date." data-val-required="The date field is required." id="date" name="date" type="hidden" value="5-12-2016" /><input data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." id="Id" name="Id" type="hidden" value="13" /><label for="Options">options</label><select data-val="true" data-val-number="The field meal must be a number." data-val-required="The meal field is required." id="meal" name="meal"><option selected="selected" value="0">--Choose an Option--</option> 

<option value="1">Option 1</option> 

<option value="2">Option 2</option> 

<option value="3">Option 3</option> 

<option value="4">Option 4</option> 

</select>  <br /> 

<label for="comment">comment</label><input data-val="true" data-val-number="The field servings must be a number." data-val-required="The comment field is required." id="comment" name="comment" type="text" value="0" />  <br /> 

     <input type="submit" value="Submit"/> 

</form></div> 

<p>test after the div</p> 

Wenn ich in den DOM-Explorer gehen und die verschiedenen Teile wählen, werden sie zeigen, aber die Anfangslast wie folgt aussieht:

screenshot

Es zeigt alles korrekt in Chrome und Firefox

Auch das Entfernen der anderen Form auf der Seite löst das Problem nicht .

+0

Enthält Ihre Seite eine 'Form' um' popupDiv'? –

+0

Es gibt ein anderes Formular auf der Seite, aber es enthält nicht mein popupDiv – Alex

+0

Wenn 'popupDiv' nicht im Formular ist, dann funktioniert es in Edge wie erwartet. Wenn 'popupDiv' innerhalb der Form ist, dann entfernt Edge (und FF) die interne' Form' und behält die externe. Der Inhalt des internen Formulars wird angezeigt. Senden geht an externe Formularaktion. Das habe ich vom Experiment herausgefunden. Verschachtelte Formulare sind nicht erlaubt. EI 11 macht dasselbe. Überprüfen Sie den Inhalt Ihrer xhr-Antwort. –

Antwort

5

Scheinbar können Sie ein Formular nicht in ein verstecktes Element laden.

änderte ich den Auftrag in meinem JavaScript-Funktion aus:

document.getElementById("PopupDiv").innerHTML = xhttp.responseText; 
document.getElementById("PopupDiv").removeAttribute("hidden"); 

An:

document.getElementById("PopupDiv").removeAttribute("hidden"); 
document.getElementById("PopupDiv").innerHTML = xhttp.responseText; 

und jetzt funktioniert es.

+0

Ich habe den einen oder anderen Weg benutzt und das Formular erschien und funktionierte in allen Browsern. –

Verwandte Themen