在JQuery中,我可以用这种方式一次设置多个元素的值:
<form action="" id="mainForm">
<input type="text" name="Phone" class="deftext" value="" >
<input type="text" name="Number" class="deftext" value="" >
<input type="text" name="Name" class="deftext" value="" >
<input type="text" name="Lastname" class="deftext" value="" >
<input type="text" name="Middlename" class="deftext" value="" >
<input type="text" name="Age" class="deftext" value="" >
<input type="text" name="Email" class="deftext" value="" >
<input type="text" name="Occupation" class="deftext" value="" >
</form>
$('#mainForm .deftext').val("hello");
// OR
$('#mainForm input:text').val("");
在ExtJS 4中是否有类似的方法将以下代码修改为单行?
Ext.getCmp('mainForm').down('[name=Phone]').setValue('');
Ext.getCmp('mainForm').down('[name=Number]').setValue('');
Ext.getCmp('mainForm').down('[name=Name]').setValue('');
....
答案 0 :(得分:0)
好吧,如果子组件有共同点(例如xtype),你可以执行类似
的操作Ext.getCmp('mainForm').query('textfield').each(function(component){component.setValue('')});
但不,你不能在组件数组上使用组件方法。
答案 1 :(得分:0)
您的JQuery代码实际上不可读,因为在查看该函数时,您无法看到有多个字段受到影响。这就是ExtJS不支持这种语法的原因。要么使用
Ext.getCmp('mainForm').down('[name=Phone]').setValue('');
Ext.getCmp('mainForm').down('[name=Number]').setValue('');
或您使用
Ext.getCmp('mainForm').getForm().setValues({
Phone: '',
Number: ''
});
与您的JQuery示例不同,这两个示例都是可读的,因为我不必知道哪些类已应用于哪些字段。
如果要将所有字段重置为上一次form.loadRecord
操作期间设置的值,或者如果未执行form.loadRecord
操作,则重置初始值,请使用form.reset
:< / p>
Ext.getCmp('mainForm').getForm().reset();