【问题标题】:Clear select or manipulate POST value清除选择或操作 POST 值
【发布时间】:2011-12-23 15:53:40
【问题描述】:

我有一个select 和一些options。但是这个选择部分并不总是显示出来。它仅在用户单击另一个元素时显示。如果用户提交的表单比选择的默认值(第一个条目)也提交。如何清除选择值?

我用$('#ExpM').val('') 和这个试过了:

    $('#Form').submit(function() {
        if (!$('#radio_dump').is(':checked')){
            $('#ExpM').selectedIndex=-1;
            $('#ExpY').selectedIndex=-1;
        }
    });

但这些值也会在帖子中发送。这些值不是必需的。我能做什么?

【问题讨论】:

  • 有一个隐藏字段,然后当显示选项时更新这个隐藏字段...然后在 PHP 中检查隐藏字段的值 - 如果它的设置只是忽略选择元素中的数据跨度>
  • 我总是在我的选择中添加一个空白的第一个选项
  • @Galen 这是正确的做法。

标签: php javascript jquery html


【解决方案1】:

试试这个:

$('#Form').submit(function() {
    if (!$('#radio_dump').is(':checked')){
        $('#ExpM').attr('name','');
        $('#ExpY').attr('name','');
    }
});

基本上,name 它是空白的,因此不会发送任何内容。

【讨论】:

    【解决方案2】:
    foreach($_POST as $key => $value)
    if ( empty($value) ) unset($_POST[$key]);
    

    【讨论】:

    • 这段代码应该放在哪里?使用unset 应该清除变量。这是否意味着我再也无法在 Firebug 中看到它们了?
    • 这是 PHP 代码,firebug 看不到服务器端的值...这将从 PHP 中的 $_POST 数组中删除空值,您应该像这样在选择中设置第一个选项<option value="">Empty</option>.. .
    • 目前我将表单的值发送到生成值的同一脚本。如果我使用print_r ($_POST);,我可以看到数组中的参数。同样在 Firebug 中,我看到了 POST 参数。我已将 PHP 代码放在脚本的末尾。难道不是在提交事件或类似的事情中吗?我已经按照 Galen 的建议添加了空选项字段。
    • 那你应该把它加到 PHP 脚本的上面,加到底部是没有意义的。
    【解决方案3】:

    这只是一些想法,我没有测试它是否能解决你的问题:

    不提交禁用的表单控件。您可以禁用那些不应该提交的表单控件,这样您就不必再担心选择了哪个项目。

    Disabled and read-only controlsHTML4

    我很确定 jQuery 可以禁用表单字段,请参阅 jQuery - Disable Form Fields

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-05
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      相关资源
      最近更新 更多