1

以下代码根据父选择列表的值显示一个(许多隐藏的)子选择列表。该脚本检查是否选择了任何值(在父选择列表中),如果是,则显示相应的子选择列表。但是,如果用户为父选择列表选择一个值,发布表单,得到一条消息,即子选择列表错过输入并且(很可能)在浏览器中按下后退按钮,父选择列表仍然有一个值(我猜浏览器默认)并且子选择列表是隐藏的,这很可能会使用户感到困惑。

如何解决?

Javascript:

    $('#parent-list').live("change",function() {
        var value = $(this).find('option:selected').val();
        $("#child-list-"+value).slideDown(200).siblings().hide();
        return false;
    });

HTML:

<select id="parent-list" name="parent">
  <option value="1">1</option>
  ...
</select>
<select id="child-list-1 style="display:hidden">
   <option value="a">a</option>
</select>
<select id="child-list-2 style...
4

2 回答 2

1

我通常在每次页面加载时选择适当的选项,通过生成 HTML 的代码或在文档准备好时在 JavaScript 中选择。

于 2012-07-15T23:55:08.643 回答
0

我认为这是一个普遍的问题,据我所知,没有完美的解决方案。

您需要找到某种方法来检查页面是否处于无效状态,例如setInterval可以检查任何依赖关系并在必要时重新渲染的刷新计时器 ()。

如果用户在 POST 后按下后退按钮,他会收到警告(至少在某些浏览器中)。虽然你不能相信用户意识到这个问题......

编辑:另外,为什么用户被重定向到另一个页面以获取错误消息?如果发生错误,您是否可以将他重定向回表单,或者最好在提交表单之前执行验证客户端?

于 2012-07-16T02:53:23.063 回答