当回显基于php的选择项时,JQM selectmenu第一个选项为空

时间:2013-11-18 17:05:23

标签: php mysql jquery-mobile

我正在使用这个php在mySQL数据库的表单中填充jQuery Mobile选择菜单:

$OTsql = "SELECT * FROM OrderTypes";
$OTresult = mysql_query($OTsql) or die (mysql_error());
while ($row = mysql_fetch_array($OTresult))
{
    $OTid=$row["id_ot"];
    $OTname=$row["orderTypes"];
    $OToptions.="<OPTION VALUE=\"$OTid\">".$OTname;
}

html是这样的:

<label>Order Type:</label><br>
<select name="orderType" id="orderType" data-overlay-theme="e" data-native-menu="false" data-icon="arrow-d">
    <option id="0" value=""> Select Order Type </option>
    <option>
        <? echo $OToptions ?>
    </option>
</select>

虽然我可以单击选择菜单并查看数据库中列出的选项,但它显示一个空白(选择菜单按钮本身没有列出文本),当我单击菜单时,顶部位置是一个空白占位符。 我已经尝试了各种各样的jQuery选项,比如我在SO上找到的变体:

$(document).bind('mobileinit',function(){
   $.mobile.selectmenu.prototype.options.hidePlaceholderMenuItems = true;
});

更大的问题(我可能没有按钮上默认列出的第一个选项或“选择订单类型”作为按钮上列出的项目 - 这将是理想的),但是当我去保存时一个预先存在的表单,它将在那里选择的任何内容更改为数据库记录中的空白。 任何见解将不胜感激。我甚至不确定我是否会以正确的方式解决这个问题。

3 个答案:

答案 0 :(得分:0)

你正在构建错误的选项。试试这个:

$OTsql = "SELECT * FROM OrderTypes";
$OTresult = mysql_query($OTsql) or die (mysql_error());
while ($row = mysql_fetch_array($OTresult))
{
    $OTid=$row["id_ot"];
    $OTname=$row["orderTypes"];
    $OToptions.="<option value=\"$OTid\">".$OTname ."</option>";
}

HTML

<label>Order Type:</label><br>
<select name="orderType" id="orderType" data-overlay-theme="e" data-native-menu="false" data-icon="arrow-d">
    <option id="0" value=""> Select Order Type </option>
    <?php echo $OToptions ?>
</select>
</label>

BTW,不推荐使用mysql_ *函数。更改为mysqli_ *或_PDO函数

答案 1 :(得分:0)

你能试试吗,

 $OToptions.="<option value=\"$OTid\">".$OTname."</option>";  


<select name="orderType" id="orderType" data-overlay-theme="e" data-native-menu="false" data-icon="arrow-d">
<option id="0" value=""> Select Order Type </option>

 <?php while ($row = mysql_fetch_array($OTresult))
   {
     $OTid=$row["id_ot"];
     $OTname=$row["orderTypes"];
    echo "<option value=\"$OTid\">".$OTname."</option>";
    }
   ?>
 </select>

答案 2 :(得分:0)

正如我从您的代码中看到的那样,我希望生成的输出为:

...
<option>
   <option>....</option>
   ...
   <option>....</option>
</option>
...

这是错误的。尝试通过修改html标记来删除外部标记:

<select name="orderType" id="orderType" data-overlay-theme="e" data-native-menu="false" data-icon="arrow-d">
    <option id="0" value=""> Select Order Type </option>
    <? echo $OToptions ?>
</select>

此外,为了改进风格,我建议您以更易读的方式重新格式化PHP部分,例如:

$OToptions .= '<option value="'.$OTid.'">'.$OTname;