【问题标题】:Correct method to store option values in a select box将选项值存储在选择框中的正确方法
【发布时间】:2012-09-07 12:42:18
【问题描述】:

很抱歉发布一个已经发布的问题,但是我真的很难让这个功能发挥作用。当我更改选择框选项值时,我希望它在页面刷新或注销时保持不变。我必须使用 AJAX/PHP 来让它工作吗?我试图这样做无济于事。 Possible to run DB update function when dropdown is selected.

我的代码如下:

echo '<tr>';
    echo '<td><input type="text" name="order_no[]" value="' . $row['Orderno'] . '"/></td>';
    echo '<td><input type="text" name="order_date[]" value="' . $row['Orderdate'] . '"/></td>';
    echo '<td><input type="text" name="order_ordered_by[]" value="' . $row['Orderedby'] . '"/></td>';
    echo '<td><input type="text" name="order_supplier[]" value="' . $row['Supplier'] . '"/></td>';
    echo '<td><input type="text" name="order_total_price[]" value="' . $row['totalprice'] . '"/></td>';
    echo '<td><input type="text" name="order_requested_by[]" value="' . $row['requestedby'] . '"/></td>';
    echo '<td>';
    echo '<select id ="id" name="id">';
    echo '<option value = "1" class = "pending">Pending</option>';
    echo '<option value = "2" class = "approved">Approved</option>';
    echo '<option value = "3" class ="disapproved">Disapproved</option>';
    echo '</select>';
    echo '</td>';
    echo '</tr>';

【问题讨论】:

  • 就像在下面的答案中所说,jQuery 是你的朋友!

标签: php jquery html forms html-table


【解决方案1】:

听起来选中的状态应该是订单的一个属性。因此,您应该对 PHP(或任何您的服务器端语言)进行 ajax 调用,以在选择框更改时更新状态。选择框本身应该类似于:

echo '<select id ="id" name="id">';
echo '<option value = "1" class = "pending"' . ($row['status'] == 'Pending' ? ' selected=selected' : '') . '>Pending</option>';
echo '<option value = "2" class = "approved"' . ($row['status'] == 'Approved' ? ' selected=selected' : '') . '>Approved</option>';
echo '<option value = "3" class ="disapproved"' . ($row['status'] == 'Disapproved' ? ' selected=selected' : '') . '>Disapproved</option>';
echo '</select>';

我认为不需要 cookie

【讨论】:

  • 我收到了一个意外的 ';'在我运行上述代码时的实现
  • 这是在我的页面上包含 AJAX 请求的正确方法吗?
  • @m1243 这不是唯一的方法,但你当然可以这样做(另见api.jquery.com/jQuery.postapi.jquery.com/jQuery.getJSON)。数据参数需要作为键/值对传递,而不仅仅是作为值。所以像data: {status: val}这样的东西应该工作(或者至少足够接近让你走上正确的轨道)
【解决方案2】:

您可以将选定的值存储在 cookie 中,查看jquery cookie 插件。

或者,如果您能够以某种方式识别用户,您可以将值存储在服务器上并立即呈现。但是当您声明时,即使在注销后也应该保留所选值,无论如何您都需要 cookie 来存储一些标识令牌。

【讨论】:

  • 谢谢,当使用 jQuery 时,这可以在多台计算机上查看表格吗?选择选项值时,我无法使用 cookie 功能
  • 只是为了确保.. 说“多台计算机” - 您的意思是,一旦一个用户选择了一个值,您希望所有其他人都能看到该选择吗?
  • 嗨,是的,这是正确的,更改需要反映在不同的 PC 上
  • 好的,那么忘掉cookie吧,你只需要根据previous question的答案更新数据库。顺便提一句。非常不寻常的要求..
  • 好的,谢谢,管理员可以查看已批准、待处理或未批准的订单。我想不出更好的方法来解决这个问题。谢谢
【解决方案3】:

只需执行以下 jquery 和 ajax 代码即可

$('#id').change(function(){
   var val = $('#id').val();
   $.ajax({
        type: 'POST',
        url: '',//url of the file
        data: val,
        success: function(msg){
      }
    });
});

【讨论】:

    【解决方案4】:

    JQuery UI 上有一个很好的例子,它使用了一个自动完成框。恕我直言,比选择下拉菜单好得多。 它具有所有 AJAX 功能,只需几行代码即可获得工作示例:

    <script>
        $(function() {
            $( "#birds" ).autocomplete({
                source: "search.php",
                minLength: 2,
                select: function( event, ui ) {
                    log( ui.item ?
                        "Selected: " + ui.item.value + " aka " + ui.item.id :
                        "Nothing selected, input was " + this.value );
                }
            });
        });
        </script>
    

    【讨论】:

      猜你喜欢
      • 2011-04-02
      • 2019-03-07
      • 1970-01-01
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 2015-10-05
      • 1970-01-01
      相关资源
      最近更新 更多