为什么IE8不提交表格?

时间:2014-02-10 22:47:44

标签: javascript internet-explorer-8 html-form-post

我正在开发一个专门针对IE8的小型Web应用程序(我知道你们都已经感受到了痛苦)。在此应用程序中,我有一个更新“按钮”(单击时)生成一个框,用户可以单击。我使用JavaScript生成框,并使用input生成type="submit"标记。

以下是代码片段:

HTML

<form action="." method="POST" id="yield_curve_form" enctype="multipart/form-data">
    <div class="fileUploadDiv">
        <img id="yieldCurve" src="../img/market/yield_curve.jpg" alt="ZBPF Bond Market" >    
        <div class="fileUploadButton">
            <span>Upload New Image</span>
            <input type="file" name="image_file" accept="image/*" class="uploadInput">
        </div>
        <div class="fileUploadReq">    
            <p>Image Requirements:</p>
            <ul>
                <li>Format: .png, .jpg, .jpeg, .bmp, .tif, .tiff</li>
                <li>Resolution: 650 x 383</li>
                <li>Maximum size: 2.0 MB</li>
            </ul>
        </div>
    </div>
    <button type="button" class="marketUpdateButton" onclick="confirmUpdate('yield_curve');">Update</button>

JS

function confirmUpdate(name)
{
    //  Create a div element
    var div = document.createElement('div');
    //      Give it an ID
    div.id = 'preSubmitAlert';

    //  Create a child h2 tag
    var h2 = document.createElement('h2');
    h2.innerHTML = 'This is a permanent change';
   //  Create a child p tag
   var pMessage = document.createElement('p');
   pMessage.innerHTML = 'Did you double check the data? It is important the data is     accurate before you submit it.';
   //  Create child input tags
   var inputYes = document.createElement('input');
   var inputNo = document.createElement('input');
   //      Set parameters for input tags
   inputYes.type = 'submit';
   inputYes.name = name + '_update';
   inputYes.value = 'Yes. Update the data.';
   inputYes.id = 'inputYes';
   inputNo.type = 'button';
   inputNo.value = 'No. Take me back, please.';
   inputNo.id = 'inputNo';

   //  Append the children to 
   div.appendChild(h2);
   div.appendChild(pMessage);
   div.appendChild(inputYes);
   div.appendChild(inputNo);

   //  Create the background for transparency (needed for IE8 support)
   var bg_div = document.createElement('div');
   bg_div.id = 'bg_div';

   //  Create a screen and append the above div to it
   var screenDiv = document.createElement('div');
   screenDiv.id = 'screenDiv';
   //      Appending div and bg_div to screenDiv
   screenDiv.appendChild(div);
   screenDiv.appendChild(bg_div);
   //      Appending screenDiv to the body tag
   document.body.appendChild(screenDiv);
   //      This line needs a reference to the #screenDiv is, which is inserted in the DOM only in the above line.
   inputNo.onclick = function(){destroyElement(document.getElementById('screenDiv'))};
   inputYes.setAttribute('form', name + '_form');
}

问题

为什么点击时<input type="submit" ...>没有提交数据?

Obs。:这段代码适用于所有其他浏览器,包括更高版本的IE。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

改变这个......

document.body.appendChild(screenDiv);

对此...

document.getElementById(name + '_form').appendChild(screenDiv);

我非常怀疑IE8支持HTML5 form属性,因此您需要将提交按钮作为表单的后代。

我找不到任何关于此的官方文件,但我怀疑是否有人正在努力研究它。