如何通过name属性一次设置多个元素的值(ExtJs 4)

时间:2016-02-04 15:02:23

标签: extjs extjs4.1

在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('');
....

2 个答案:

答案 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();