Javascript Ext js:将禁用的字段提交为空

Javascript Ext js:将禁用的字段提交为空,javascript,forms,Javascript,Forms,我有一个表单,根据字段“a”中的值,启用/禁用可选字段“b” 如果在启用b的情况下使用a值提交数据,则数据库也包含b值。 问题是,当用户随后编辑该记录时,选择禁用b的a值,我希望提交提交一个“空白”值空字符串,以清除数据库记录 请不要争辩后端应该足够智能,在这种情况下丢弃b值。。。因为那是我无法控制的 我试图在提交之前启用b字段并将其设置为,但b字段仍然没有提交。在提交之前使用 我甚至试图修改其他参数,比如originalValue,以确保b字段是脏的。我甚至为setValue调用测试了一个随机

我有一个表单,根据字段“a”中的值,启用/禁用可选字段“b”

如果在启用b的情况下使用a值提交数据,则数据库也包含b值。 问题是,当用户随后编辑该记录时,选择禁用b的a值,我希望提交提交一个“空白”值空字符串,以清除数据库记录

请不要争辩后端应该足够智能,在这种情况下丢弃b值。。。因为那是我无法控制的

我试图在提交之前启用b字段并将其设置为,但b字段仍然没有提交。在提交之前使用

我甚至试图修改其他参数,比如originalValue,以确保b字段是脏的。我甚至为setValue调用测试了一个随机值,只是为了确保它不是一个“空白”字段行为。但即使在设置“X”时,也不会提交该值。没什么帮助

我肯定我忽略了一些非常琐碎的事情,但我想不出来。 因此,在花了几个小时通过帖子和测试了解情况后,我放弃了,并向社区发表了演讲

Thx, C


将字段设置为readonly而不是disabled,则该字段仍将与表单数据一起过帐,但用户将无法对其进行编辑

残废 只读
您的问题是什么?我的问题是如何确保在单击“保存/提交”按钮时被禁用的字段也将包含被禁用的字段。我设法启用了,并设法在实际提交调用之前弄脏了它们。但这不会提交字段。这就像js控制台仍然相信这些在按钮点击开始时被禁用的字段,仍然不需要提交。无论我如何尝试,这些字段都不会出现在数据中。即使将它们设置为任意值,也不会触发将其包含在post数据中。readonly的问题在于,对于使用过的用户来说,这并不明显,他不应该使用该字段。但我会尝试一下,看看is是否会添加到刚刚测试的post的数据中,这些字段现在会添加到post数据中。出于上述原因,我并不太喜欢它,但在有人提出更好的解决方案之前,我将使用它并添加一个动态工具提示,其中包含“Field not Applieve”(字段不适用)左右。您可以更改只读字段输入的css:read-only{background color:grey;}谢谢Kurt。这样就完全解决了问题,因为行为类似于禁用字段。我在测试时注意到的一个区别是:在选定的只读字段中单击backspace会导致浏览器转到上一页,这取决于浏览器设置,而禁用的字段则无法选择,因此不会导致此错误。谢谢大家,没问题。这很奇怪,我有一种感觉,该字段没有被选中,因为它没有焦点,但可能内容被突出显示,那么后面的空间将触发历史。但如果字段上没有光标,则不会选中该字段。
form.on('beforeaction', function(form, action) {
  if (action.type == 'submit') {
    //clean disabled fields before submitting
    if (item!='general') {
      var escid = Ext.getCmp('spcway-' + item + '-form-escid');
      if (escid.disabled) {escid.enable(); escid.originalValue='abc'; escid.allowBlank=true; escid.setValue(''); escid.allowBlank=false}
      if (item!='status') {
        var escoption = Ext.getCmp('spcway-' + item + '-form-escoption');
        if (escoption.disabled) {escoption.enable(); escoption.originalValue='abc'; escoption.setValue('')}
      }
    }
    return true;
  }
});