onChange =“document.myform.submit()和PHP while循环

时间:2011-02-18 07:49:22

标签: php javascript

我有以下代码,并且它自己的工作正常,但我需要在PHP while循环中,因为可能有数百条记录。这不起作用,这意味着它不提交表单。

对此代码的任何帮助或其他有用的想法都表示赞赏。它还需要向mysql DB写入新值。请注意,我不是一个使用javascript的新手。

由于

<form action="home.php" method="post" name="status">
    <input type="hidden" name="record_number" value="<? echo $r['record_number']; ?>">
    <input type="hidden" name="submit" value="cstatus">
    <select name="statuscode" type="dropdown" style="font-size: 8pt; width: 60px" onChange="status.submit();">
        <? if($r['statuscode']) { echo "<option value='".$r['statuscode']."'>".$r['statuscode']."</option>"; } ?>
        <option value='Open'>Open</option>      
        <option value='Closed'>Closed</option>
        <option value='Pending'>Pending</option>        
        <option value='Cancelled'>Cancelled</option>
    </select>
</form>

2 个答案:

答案 0 :(得分:1)

onChange="status.submit();"

状态未定义。听起来你依赖于遗留的Internet Explorer怪异来为任何带名字的元素创建全局变量。

快速解决方法是:

this.form.submit();

或者,因为已经有一个名为submit的输入(避免使用与现有属性相同的名称,它会弄得一团糟)

document.createElement('form').submit.call(this.form);

也就是说,作为一个用户界面,自动提交表单的下拉菜单很糟糕,依赖于JS只是一种糟糕的方法。

每个选项都有一个提交按钮(最多只有5个)会占用更多的空间,但只需点击一下即可解决问题。

<input type="submit" name="statuscode" value="Open">
<input type="submit" name="statuscode" value="Closed">
<input type="submit" name="statuscode" value="Pending">
<input type="submit" name="statuscode" value="Cancelled">

答案 1 :(得分:1)

这在我的情况下完美无缺:

<select ... onChange="this.form.submit();">