使用disabled = true动态创建输入字段将空值设置为零
我有一个时间表表。在桌子底部有一个按钮,允许我添加一行。可以理解的是,新行中的所有单元格都是空的。 JavaScript使用:使用disabled = true动态创建输入字段将空值设置为零
txtFld.setAttribute('value', '');
要这样做。
然而,在某些情况下,我想一些新的领域中展现出来,但如此禁用我(在这些情况下)中添加:
txtFld.setAttribute('disabled', 'disabled');
的问题是,这样做的时候,提交后,当表重新呈现时,所有这些空值都显示为零而不是空字符串。就计算而言,这很好,但我不想排零。我想要空单元格。如果我拿出残疾部分,它工作正常。
我已经临时解决了这个问题,而不是使用禁用,使用只读,这似乎给了我想要的结果。唯一的问题是,虽然文本字段仍然是不可编辑的,但用户可以将光标置于该框内。我想要清洁工,“甚至不能在这里点击”残疾人给我。
任何想法,为什么禁用功能是这样做的,以及如何使用禁用没有得到的零行?
为了记录在案,我已经混合的每个组合匹配:
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';
,我能想到的结果相同(或更糟)每次。
谢谢。
当某个字段被禁用时,它不包含在发送到服务器的表单参数中。
在新的浏览器(IE11 +,和几乎所有其他),你可以使用CSS的元素禁用指针事件:
txtFld.readonly = true;
txtFld.style.pointerEvents = 'none';
这会让元素根本就没有任何响应点击。 (Here is a jsfiddle.)由于未禁用,表单POST 将将空字段发送到服务器。
您应该通过将其DOM节点的“disabled”属性设置为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 -->
每当你使文本字段,你禁用隐藏的输入,反之亦然。这样总有一些东西发布。
我在txtFld.style.pointerEvents ='none'中添加了;没有结果。我仍然可以在输入字段中单击。它仍然不会让我输入任何内容,但我可以将闪烁的光标放在那里。 –
@ReverendDovie您使用的是哪种浏览器?它适用于最新的Firefox和Chrome。 – Pointy
不幸的是,我不得不在IE9中这样做。 –
没有必要使用'.setAttribute()'来操纵DOM nodex的属性。 'txtField.value = null'或'txtFld.disabled = true'可以正常工作。 – Pointy