php - 使用 PHP 和 Javascript 从 MySQL 拆分数据在 IE 中有效,但在 FF 中无效

标签 php javascript mysql split getelementbyid

我的页面上有以下 JavaScript 函数:

function setFields(){
var menu = document.getElementById('EditLocation');
var itemDataArray = menu[menu.selectedIndex].value.split('|');
form.LocationShortName.value = itemDataArray[0];
form.LocationLongName.value = itemDataArray[1];
form.Phone.value = itemDataArray[2];
form.Address1.value = itemDataArray[3];
form.CityStateZip.value = itemDataArray[4];
form.MapLink.value = itemDataArray[5];
}

在表格中,我有以下内容:

<select class="input2" name="EditLocation" id="EditLocation" onchange = "setFields();">
                  <option value="-Add New-"<?php if($editlocation=='-Add New-'){echo(' selected="selected"');} ?>>-Add New-</option>
                    <?php require_once('connection.php'); 

        $connection = mysql_connect($hostname,$username,$password) or die (mysql_errno().": ".mysql_error()."<BR />"); 
        mysql_select_db($database); 

        $sql = "SELECT * FROM directions ORDER BY dirshortname"; 

        $query = mysql_query($sql); 

        while ($row = mysql_fetch_array($query)) {  
            echo('<option value="'.stripslashes($row['dirshortname']).'|'.stripslashes($row['dirlongname']).'|'.stripslashes($row['dirphone']).'|'.stripslashes($row['dirstreet']).'|'.stripslashes($row['dircsz']).'|'.stripslashes($row['dirmaplink']).'"');
            if ($editlocation==stripslashes($row['dirshortname']))
            {
                echo(' selected="selected"');
            }
            echo('>'.stripslashes($row['dirshortname']).'</option>');
         }
        ?> 

本质上,PHP 应该将从 MySQL 中提取的数据元素打包到 SELECT 框的 OPTION VALUE 部分中。一旦用户选择一条记录,JavaScript 就会将打包的数据分开并填充 FORM 上的其他数据元素。这一切在 IE 中运行得很好,但在 FF 中字段不会填充数据。

表格有点长,但为了完整起见,我还是将其包含在内。

 <form action="admin-dirs.php" method="post" enctype="multipart/form-data" style="margin:0px; padding:0px " id="form">
              <table width="587" border="0" cellspacing="0" cellpadding="0">
               <tr>
                  <td width="60">&nbsp;</td>
                  <td width="185">Select Location to Edit: </td>
                  <td width="342"><select class="input2" name="EditLocation" id="EditLocation" onchange = "setFields();">
                  <option value="-Add New-"<?php if($editlocation=='-Add New-'){echo(' selected="selected"');} ?>>-Add New-</option>
                    <?php require_once('connection.php'); 

        $connection = mysql_connect($hostname,$username,$password) or die (mysql_errno().": ".mysql_error()."<BR />"); 
        mysql_select_db($database); 

        $sql = "SELECT * FROM directions ORDER BY dirshortname"; 

        $query = mysql_query($sql); 

        while ($row = mysql_fetch_array($query)) {  
            echo('<option value="'.stripslashes($row['dirshortname']).'|'.stripslashes($row['dirlongname']).'|'.stripslashes($row['dirphone']).'|'.stripslashes($row['dirstreet']).'|'.stripslashes($row['dircsz']).'|'.stripslashes($row['dirmaplink']).'"');
            if ($editlocation==stripslashes($row['dirshortname']))
            {
                echo(' selected="selected"');
            }
            echo('>'.stripslashes($row['dirshortname']).'</option>');
         }
        ?> 
                  </select></td>
                </tr>
                <tr>
                  <td width="60">&nbsp;</td>
                  <td colspan="2"><span class="main" style=" padding-left:12px; padding-right:12px; padding-top:6px"><br />
                    (Note: 
            Leaving the Long Name blank will duplicate the Short Name.)</span></td>
                  </tr>
                <?php if(!$errlocationshortname=='' ){echo('
                <tr>
                  <td width="60">&nbsp;</td>
                  <td width="185">&nbsp;</td>
                  <td width="342"><span class="redtxterror">'.$errlocationshortname.'</span></td>
                </tr>');} ?>
                <tr>
                  <td>&nbsp;</td>
                  <td>Location Short  Name: <span class="red_star">*</span> </td>
                  <td><input name="LocationShortName" id="LocationShortName" type="text" class="input2<?php if(!$errlocationshortname==''){echo('r');} ?>" value="<?php echo($locationshortname); ?>" maxlength="50"></td>
                </tr>
                <?php if(!$errlocationlongname=='' ){echo('
                <tr>
                  <td width="60">&nbsp;</td>
                  <td width="185">&nbsp;</td>
                  <td width="342"><span class="redtxterror">'.$errlocationlongname.'</span></td>
                </tr>');} ?>
                <tr>
                  <td>&nbsp;</td>
                  <td>Location Long Name:  <span class="red_star">*</span> </td>
                  <td><input name="LocationLongName" id="LocationLongName" type="text" class="input2<?php if(!$errlocationlongname==''){echo('r');} ?>" value="<?php echo($locationlongname); ?>" maxlength="50"></td>
                </tr>
                <?php if(!$erraddress=='' ){echo('
                <tr>
                  <td width="60">&nbsp;</td>
                  <td width="185">&nbsp;</td>
                  <td width="342"><span class="redtxterror">'.$erraddress.'</span></td>
                </tr>');} ?>
                 <tr>
                  <td>&nbsp;</td>
                  <td>Street Address: <span class="red_star">*</span> </td>
                  <td><input name="Address1" id="Address1" type="text" class="input2<?php if(!$erraddress==''){echo('r');} ?>" value="<?php echo($address); ?>"></td>
                </tr>
                <?php if(!$errcsz=='' ){echo('
                <tr>
                  <td width="60">&nbsp;</td>
                  <td width="185">&nbsp;</td>
                  <td width="342"><span class="redtxterror">'.$errcsz.'</span></td>
                </tr>');} ?>
                <tr>
                  <td>&nbsp;</td>
                  <td>City, State, Zip: <span class="red_star">*</span> </td>
                  <td><input name="CityStateZip" id="CityStateZip" type="text" class="input2<?php if(!$errcsz==''){echo('r');} ?>" value="<?php echo($csz); ?>"></td>
                </tr>
                <?php if(!$errphone=='' ){echo('
                <tr>
                  <td width="60">&nbsp;</td>
                  <td width="185">&nbsp;</td>
                  <td width="342"><span class="redtxterror">'.$errphone.'</span></td>
                </tr>');} ?>
                <tr>
                  <td>&nbsp;</td>
                  <td>Location Phone Number: <span class="red_star">*</span> </td>
                  <td><input name="Phone" id="Phone" type="text" class="input2<?php if(!$errphone==''){echo('r');} ?>" value="<?php echo($phone); ?>" maxlength="20"></td>
                </tr>
                <?php if(!$errmaplink=='' ){echo('
                <tr>
                  <td width="60">&nbsp;</td>
                  <td width="185">&nbsp;</td>
                  <td width="342"><span class="redtxterror">'.$errmaplink.'</span></td>
                </tr>');} ?>
                <tr>
                  <td>&nbsp;</td>
                  <td>Paste Link to Map: <span class="red_star">*</span> </td>
                  <td><input name="MapLink" id="MapLink" type="text" class="input2<?php if(!$errmaplink==''){echo('r');} ?>" value="<?php echo($maplink); ?>" maxlength="125"></td>
                </tr>

                <tr>
                  <td>&nbsp;</td>
                  <td>&nbsp;</td>
                  <td><div align="right" style="padding-right:25px">
                    <input type="hidden" id="action" name="action" value="submitform" />
                    <input type="submit" id="savenew" name="savenew" value="Save & New" /> 
                    <input type="submit" id="submit" name="submit" value="Save & Close" /> 
                    <?php if(!isset($_POST['action'])) {?>
                    <input type="reset" id="reset" name="reset" value="Reset" />
                    <?php } ?>
                  </div></td>
                </tr><tr>
                  <td>&nbsp;</td>
                  <td>&nbsp;</td>
                  <td class="main_d"><div align="right" style="padding-right:25px">Your IP Address is Logged as: <?php echo($ip); ?></div></td>
                </tr>
              </table>
              </form>

最佳答案

  1. 您检查过 FF 的 Javascript 控制台 (shift-ctrl-J) 是否有任何错误?
  2. 您是否尝试过使用 Javascript 调试器(例如 FF 的 FireBug)来查看设置后的 menuitemDataArray 值?

我猜你会得到“形式不是对象”或类似的信息。 IE 有一个令人烦恼的副作用,即从标签和标签 ID 自动创建对象。您没有在 setFields() 函数中定义“form”,因此 FF 无疑会提示 form 变量不存在。在 IE 中,由于它会在需要时自动创建内容,因此它很可能会为您创建“表单”,但 FF 不会,因此它不起作用。

关于php - 使用 PHP 和 Javascript 从 MySQL 拆分数据在 IE 中有效,但在 FF 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187966/

相关文章:

php - 什么时候应该使用存储过程或函数?

php - 在 PHP 中有命名变量的首选方法吗?

php - 允许登录用户在 PHP 中下载文件,否则没有人可以

php - 在 codeigniter 中不存在类 : Commonlib is library file

javascript - 使用 JavaScript 训练神经网络后,如何保存神经网络中的权重和偏差?

javascript - 将回调/函数从 native 发送到 javascript

javascript - nuxt layout - 为移动端和桌面端提供不同的布局

mysql - 尝试编辑mysql中的my.cnf文件但不起作用

mysql - MySQL数据库中的非空表列表

php - 单步执行 xml,在标签处做一些特定的事情