1

我的表格有一堆地址字段(街道、城市、国家、省、邮政编码)需要一遍又一遍地填写。为了让用户更容易,我添加了一个“复制自”选择器,他们可以在其中选择他们以前使用过的地址。当他们这样做时,表单域会自动填写,然后禁用。这样他们就可以清楚地看到他们将要提交的内容。

问题是,如果这些字段被禁用,W3会说不会提交输入。那很好,因为我可以从选择器中获取我需要的所有数据,除了现在表单验证失败。

我想我有两个选择:

  1. 在提交表单之前重新启用表单字段(但这有点小技巧)
  2. 将所有地址字段设为可选。但是我需要添加一堆clean_方法来确保当你不使用预设选择器时它们实际上被填充了。此外,我在整个网站上都使用地址表单,在某些地方确实需要它们,所以我不想让这些字段成为可选字段。虽然,我想我可以只是复制粘贴地址表格并为此页面制作一个特殊情况。

想法?我应该采取什么方法?

4

2 回答 2

1

几个想法。他们可能会给你一些想法。

  1. 如果用户使用他们以前使用过的地址并且他们无法编辑表单(字段被禁用),他们是否需要地址表单?你不能在没有表单的情况下显示之前的地址并将对它的引用作为隐藏参数传递吗?
  2. 如果用户可以编辑之前选择的地址(我认为亚马逊会这样做),那么让表单字段可编辑是否有意义?
于 2010-08-12T03:42:58.020 回答
0

我一直面临着类似的问题,其中字段是必需的,但它们的值是从另一个表单中获取的。我决定做的是以下内容:

  1. 为所有需要但不需要手动输入的输入分配一个类
  2. 创建一个自动禁用所有用户从键盘或上下文菜单输入的函数

这是我的解决方案: HTML FILE WITH FORM

<head>
<script src='file1.js'></script>
</head>

<body>
<form method='post'>
<input class='RequiredNoManual'>
<input type='submit'>
</form>

</body>
</html>

JS文件

window.addEventListener('load', configureNoManualInputFields);
function configureNoManualInputFields()
{
    var elements = document.getElementsByClassName('RequiredNoManual');
    for(var i =0; i<elements.length; i++)
    {
        elements[i].oncut = function(){event.preventDefault();};
        elements[i].oncopy = function(){event.preventDefault();};
        elements[i].onkeydown = function(){event.preventDefault();};
        elements[i].onkeypress = function(){event.preventDefault();};
        elements[i].setAttribute('required', 'required');
    }

}
于 2013-07-01T13:09:57.050 回答