форма не идентифицирует новые поля ввода, сгенерированные с помощью JavaScript - PullRequest
0 голосов
/ 05 мая 2010

Я занимаюсь разработкой сайта на php.

У меня есть некоторые проблемы с моей формой

Мне нужно более одного программного пакета одновременно.

поэтому я использовал javascript для добавления файла и раскрывающийся список к моему html.

Я вызвал функцию ajs для добавления новых полей ввода каждый раз, когда я нажимаю на ссылку.

и его отображение правильно.

но это не указано на моей странице действий.

Я не могу принять значение новых полей ввода, которые я создал с помощью этой функции JavaScript.

ниже - кодовая страница, которую я использовал.

<script language="JavaScript">

function addInput(divName){

  var newsel= document.createElement('div');
         newsel.innerHTML="<div style='padding-left:55px;padding-top:10px';>Operating System: <select name='frm_os1' id='test1' ><option value=''>--Select OS--</option><optgroup label='Spind Enabled'> </optgroup><option value='bc_linux'>&nbsp;&nbsp;&nbsp;bc_linux</option><optgroup label='Packages'> </optgroup><option value='Linux'>&nbsp;&nbsp;&nbsp;Linux</option><option value='Solaris'>&nbsp;&nbsp;&nbsp;Solaris</option><option value='2000/XP/Vista'>&nbsp;&nbsp;&nbsp;2000/XP/Vista</option><option value='XP/Vista'>&nbsp;&nbsp;&nbsp;XP/Vista</option><option value='2K/XP/Vista/W7'>&nbsp;&nbsp;&nbsp;2K/XP/Vista/W7</option><option value='HP'>&nbsp;&nbsp;&nbsp;HP</option><option value='Windows 2000/XP/Vista zip'>&nbsp;&nbsp;&nbsp;Windows 2000/XP/Vista zip</option><option value='Windows 2000/XP/Vista exe'>&nbsp;&nbsp;&nbsp;Windows 2000/XP/Vista exe</option><option value='X Server - 2.2M'>&nbsp;&nbsp;&nbsp;X Server - 2.2M</option><option value='Fonts - 32.9M'>&nbsp;&nbsp;&nbsp;Fonts - 32.9M</option></select></div>";
         document.getElementById(divName).appendChild(newsel);

          var newdiv = document.createElement('div');
          newdiv.innerHTML = "<div style='padding-left:40px;padding-top:10px';>Upload Software File: <input type='file' name='frm_image1' class='text_area'></div>";
          document.getElementById(divName).appendChild(newdiv);

}



</script>
</HEAD>

                                          <form action="act-add-software.php" method="post" onSubmit="return validate(this);" enctype="multipart/form-data">




                                                  <select name="frm_os"  class="text_area" style="width:200px">
                                                        <option value="">--Select OS--</option>
                                                            <optgroup label="Spind Enabled"> </optgroup>
                                                            <option value="bc_linux">&nbsp;&nbsp;&nbsp;bc_linux</option>
                                                            <optgroup label="Packages"> </optgroup>
                                                            <option value="Linux">&nbsp;&nbsp;&nbsp;Linux</option>
                                                            <option value="Solaris">&nbsp;&nbsp;&nbsp;Solaris</option>
                                                            <option value="2000/XP/Vista">&nbsp;&nbsp;&nbsp;2000/XP/Vista</option>
                                                            <option value="XP/Vista">&nbsp;&nbsp;&nbsp;XP/Vista</option>                                                            
                                                            <option value="2K/XP/Vista/W7">&nbsp;&nbsp;&nbsp;2K/XP/Vista/W7</option>                                                            
                                                            <option value="HP">&nbsp;&nbsp;&nbsp;HP</option>                                                            
                                                            <option value="Windows 2000/XP/Vista zip">&nbsp;&nbsp;&nbsp;Windows 2000/XP/Vista zip</option>                                                          
                                                            <option value="Windows 2000/XP/Vista exe">&nbsp;&nbsp;&nbsp;Windows 2000/XP/Vista exe</option>
                                                            <option value="X Server - 2.2M">&nbsp;&nbsp;&nbsp;X Server - 2.2M</option>
                                                            <option value="Fonts - 32.9M">&nbsp;&nbsp;&nbsp;Fonts - 32.9M</option>                                                                                                                                                                                  
                                                            </select>
                                                            <a onClick="addInput('dynamicInput');">Add More Package</a> </td>
                                                  </td>
                                                </tr>
                                                <tr>
                                                  <td colspan="2"><table border="0" cellpadding="0" cellspacing="0">
                                                      <tr align="center" valign="middle" class="tbl_row1">

                                                        <td height="25" align="left" class="font1" width="156" bgcolor="White"><div align="right">
                                                            <?if(strstr($frm_server_side_error,'frm_software')){?>
                                                            <font class="error"><b> <font color="#dd0000">*</font>&nbsp;Upload Software File: </font>
                                                            <?}else{?>
                                                            <font class="form_element"> <font color="#dd0000">*</font>&nbsp;Upload Software File:
                                                            <?}?>
                                                          </div>
                                                          </B> </td>

                                                        <td  class="font1"  bgcolor="White" align="center" style="padding-left:2px;"><input type="file" name="frm_image[]" class="text_area">
                                                        </td>
                                                        <?if($frm_sfile !=""){?>
                                                        <td  class="font1"  bgcolor="White" align="center"></td>
                                                        <?}else{?>
                                                        <td  class="font1"  bgcolor="White" align="center">&nbsp;(Current File: NOT Uploaded Yet) </td>
                                                        <?}?>
                                                      </tr>
                                                    </table></td>
                                                </tr>

                                                <tr>
                                                <td colspan="2">
                                                <div id="dynamicInput">
                                                </div>
                                                </td>
                                                </tr>

                                          </form>

Для простоты просмотра этой кодовой страницы я включил только необходимые строки кода

помогите пожалуйста решить эту проблему

1 Ответ

0 голосов
/ 24 сентября 2011

Это может быть потому, что <input type='file' name='frm_image1' class='text_area'> использует статическое имя.

Таким образом, каждый вызов addInput() создает все элементы с одинаковым именем.

Чтобы легко решить эту проблему, вы можете добавить к имени итератор и сохранить его в глобальной области видимости.

var iterator=0;

function addInput(){
    var name = 'inputElementName'+(iterator++);
    // etc...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...