如何使普通html表单与ExtJS外观匹配

如何使普通html表单与ExtJS外观匹配,extjs,forms,extjs2,Extjs,Forms,Extjs2,假设我有很多现有的html表单,我现在没有能力重写,但我确实想用ExtJS进行新的开发,然后在我们有时间的时候重写旧的。我们还要说,我想让旧表单看起来像是用ExtJS创建的,这样用户在新旧表单之间切换时不会完全感到震惊。为了保持它的挑战性,我们还要补充一点,这应该是extjs2.2[sic]兼容的 我希望我能做一些简单的事情,比如把html放到一个面板中并完成,如下所示。没有 var pnlForm = new Ext.Panel({ width:400, title:'Pane

假设我有很多现有的html表单,我现在没有能力重写,但我确实想用ExtJS进行新的开发,然后在我们有时间的时候重写旧的。我们还要说,我想让旧表单看起来像是用ExtJS创建的,这样用户在新旧表单之间切换时不会完全感到震惊。为了保持它的挑战性,我们还要补充一点,这应该是extjs2.2[sic]兼容的

我希望我能做一些简单的事情,比如把html放到一个面板中并完成,如下所示。没有

var pnlForm = new Ext.Panel({
    width:400,
    title:'Panel with a form',
    renderTo: Ext.getBody(),
    html: '<form>Test<br><input type="text"><br><input type="text"><br><input type="button" value="spam"></form>'
});
var pnlForm=新的外部面板({
宽度:400,
标题:“带表单的面板”,
renderTo:Ext.getBody(),
html:“测试”
});

这很显然是一个ExtJS面板,默认的外观和感觉(即“没有”外观和感觉)中间的HTML。

虽然我真的不想走这条路,但我也尝试了来自的精巧的“将html表单转换为ExtJS”函数。它不起作用,但即使如此,我还是宁愿把外观和感觉结合起来,而不是改变任何东西


有没有简单的方法可以清洗现有的html表单代码以匹配新的ExtJS内容的外观?

我认为将这些表单转换为ExtJS样式会更容易、更高效。您可以使用perl或类似的东西编写某种解析器

实际上只有3个选项:

  • 重写您的代码以使用正确的ExtJS创建语法,然后它应该就可以工作了(听起来您反对这样做)
  • 执行类似于您发布的操作,只是您必须镜像ExtJS输出的标记,并使用相同的CSS类名,以便利用现有的CSS
  • 如上所述,但编写您自己的自定义CSS以匹配您自己的标记的ExtJS外观,而无需重新创建ExtJS标记1:1
  • 无论你选择哪种方式,都需要付出一些努力。#2和#3的缺点是,即使您可能实现视觉奇偶性,但在字段行为、验证等方面,会有很大的功能差异,最终用户可能会将其视为bug。这假设您不需要任何专门的输入,比如日期选择器


    这没有什么灵丹妙药。如果是我,我会付出努力,用正确的方式做一次,然后完成它(#1)。任何其他选择,你最终都会重做。

    与其说反对,不如说希望推迟。如果时间是无限的,重写当然是正确的,但希望用ExtJS编写新的,然后在时间允许的情况下向后工作。2+3的组合会很有趣(用它来帮助编写extl&F),但是是的,如果没有简单的方法来“清洗”旧的表单,我认为最终会更好地用于重写。用户体验的有趣点;我可能低估了这一点。嗯,看来这是我们得到的最好答案。感谢您的反馈和现实检查。