【问题标题】:PHP: on select change, post form to selfPHP:在选择更改时,将表单发布给自己
【发布时间】:2011-04-27 22:25:40
【问题描述】:

基本上就是标题所说的。我有一个带有选择控件的表单,我想强制表单在更改时回发给自己。

$bmsclientlist = $clientobj->getBMSClientList();

echo '<form name="changebmsid" method="post" action="' . $_SERVER['PHP_SELF'] . '"><select name="bmsid">';

foreach($bmsclientlist as $bmsclient) {
    $var = '';
    if($client['bmsid'] == $bmsclient['id']) {
        $var = ' selected="selected"';
    }
    echo '<option value="' . $bmsclient['id'] .'"'. $var .'>' .$bmsclient['clientname'] . '</option>';
}

echo '</select></form>';

$backupobj = new AdminBackup();

if(isset($_POST['bmsid']){
    $statusarray = $backupobj->getStatusTotalsbyId($_POST['bmsid']);
}else{
    $statusarray = $backupobj->getStatusTotals();
}

我知道这将涉及一些 javascript,但我不太确定如何实现这一点。

非常感谢任何帮助!

谢谢,

琼斯

【问题讨论】:

    标签: php javascript forms postback


    【解决方案1】:

    这是一个&lt;select&gt;,它将提交父表单

    <form method="post" action="#" name="myform">
        <select name="x" onchange="myform.submit();">
            <option value="y">y</option>
            <option value="z">z</option>
        </select>
    </form>
    

    您所要做的就是为您的&lt;form&gt; 命名并将 onchange 事件添加到您的&lt;select&gt;...


    亚当是对的。虽然上面的示例完美运行,但我会这样做:

    使用jQuery,但还有许多其他选项可用...

    <head>
    <script type="text/javascript" src="jquery.js"></script>
    <script>
        $(document).ready(function(){
            $('#mySelect').change(function(){
                myform.submit();
            });
        });
    </script>
    </head>
    

    和表格

    <body>
    <form method="post" action="" name="myform">
        <select name="x" id="mySelect">
            <option value="y">y</option>
            <option value="z">z</option>
        </select>
    </form>
    </body>
    

    【讨论】:

    • 请注意,虽然这是执行此操作的核心方式,但它不是语义代码 - 应将 onchange 抽象为文档头部或使用诸如 jquery 之类的 dom 加载事件的外部脚本$(document).ready
    • 不显眼的 js 的简单示例。
    • 在您的示例中,使用 jQuery 有什么好处? @adam,您能否编辑安德烈的答案以反映您的建议?我很好奇如何让它变得更好。
    • @RyanEdwards,亚当的评论提到了我回答的第一部分。 jQuery 部分已经反映了他在文档&lt;head&gt; 中对 jQuery 的建议。使用 jQuery 的好处?你可以用更少的代码完成同样的事情。
    • this.form.submit();更容易重复使用。
    【解决方案2】:

    快速解决方法是这样的:

    在你的选择列表中添加一个 onchange 属性

    <select name="bmsid" onchange="javascript: form.submit();">
    

    【讨论】:

      【解决方案3】:

      将您的选择菜单更改为:

      <select name="bmsid" onchange="document.forms['changebmsid'].submit()">
      

      更新

      这是另一种可能的方法:

      <script type="text/javascript">
          window.onload = function() {
              document.forms['myform'].addEventListener('change', function() {
                  this.submit();
              }, true);
          };
      </script>
      

      将它放在页面上的任何位置,您就可以保持原样。

      【讨论】:

        猜你喜欢
        • 2012-05-18
        • 1970-01-01
        • 2011-06-23
        • 2011-10-03
        • 1970-01-01
        • 1970-01-01
        • 2018-10-23
        • 2015-03-22
        • 1970-01-01
        相关资源
        最近更新 更多