我有一个时间表表。在表的底部,有一个按钮,可以添加一行。可以理解的是,新行中的所有单元格都空着。JavaScript使用:
txtFld.setAttribute('value', '');
这样做。
但是,在某些情况下,我希望一些新领域出现但被禁用,因此我(在这些情况下)添加了:
txtFld.setAttribute('disabled', 'disabled');
问题是,在执行此操作时,提交后,当表重新呈现本身时,所有这些空值显示为零而不是空字符串。就计算而言,这很好,但是我不希望排的零行。我想要空细胞。如果我取出残疾部分,它可以正常工作。
我暂时通过使用ReadOnly而不是使用禁用的方法来纠正此问题,这似乎给了我所需的结果。唯一的问题是,尽管文本字段仍然不可编辑,但用户可以将光标放在框中。我想要一个清洁剂,"甚至无法单击此处",残疾人给了我。
关于为什么禁用功能执行此操作的任何想法以及如何在没有结果的零行的情况下使用禁用?
在记录中,我混合并匹配了:
的每个组合txtFld.setAttribute('value','');
txt.setAttribute('value', null);
txtFld.value = '';
txtFld.value = null;
txtFld.setAttribute('disabled');
txtFld.setAttribute('disabled', 'true');
txtFld.setAttribute('disabled', 'disabled');
txtFld.disabled = 'true';
txtFld.disabled = 'disabled';
我每次都能想到相同的结果(或更糟)。
谢谢。
当禁用字段时,它不包含在发送到服务器的form参数中。
在新浏览器(IE11 和几乎所有其他浏览器)中,您可以使用CSS在元素上禁用指针事件:
txtFld.readonly = true;
txtFld.style.pointerEvents = 'none';
这将使元素根本不响应任何点击。(这是一个JSFIDDLE。)由于未禁用它,因此将"空字段"将空字段发送到服务器。
您应该通过将其DOM节点的"禁用"属性设置为true
(布尔常数,而不是字符串)。
txtFld.disabled = true; // disables field
txtFld.disabled = false; // enables field
"禁用"属性被视为布尔值,因此将其设置为任何字符串值(空字符串除外)将其设置为 true
:
txtFld.disabled = "false"; // disables field
您可以做的另一件事来利用实际disabled
浏览器行为和在服务器上发布空的参数是使用成对的输入:
<input type=text name=whatever data-companion=whatever-c> <!-- visible input -->
<input type=hidden name=whatever id=whatever-c> <!-- invisible input -->
现在,每当您启用文本字段时,您 disable 隐藏的输入,反之亦然。这样,总有一些东西。