如何动态设置单选按钮的 'checked' 属性。
Posted
技术标签:
【中文标题】如何动态设置单选按钮的 \'checked\' 属性。【英文标题】:how to set the radio button's 'checked' attribute dynamically.如何动态设置单选按钮的 'checked' 属性。 【发布时间】:2013-07-28 13:45:32 【问题描述】:我开发了一个 Joomla 2.5 组件,它几乎完全符合我的要求。我有一个包含带有 2 个单选按钮(用于“am”和“pm”)的字段集的表单。我一直无法弄清楚如何根据其他信息设置适当按钮的“已检查”属性。在定义表单字段的 xml 文件中设置默认值是微不足道的,但我不知道如何动态地执行此操作。
有可能吗?我是否遗漏了文档中解释如何执行此操作的内容?
【问题讨论】:
你能告诉我你想在哪里添加这些单选按钮吗?我的意思是在为我们的组件视图创建菜单项时以前端形式或后端表示。 您能否添加表单的 XML 和构建表单的 php 代码,以便我们获得答案的上下文。 对不起 - 我应该提到该表单用于管理后端。我在表单的 xml 中没有设置默认单选按钮。该组件管理一组事件,这些事件可以显示在相关的事件显示中。单选按钮用于选择事件的时间是上午还是下午。 【参考方案1】:如果您从视图加载表单:在 view.html 的 display() 方法中,您将加载您的表单:
$this->form = $this->get('Form');
这是调用一个模型,该模型又扩展了 joomla.application.component.modelform;它的 getForm 方法加载表单:
$form = $this->loadForm('com_yourcomp.model', ...
这是我从您的描述中收集到的。如果不是这种情况,您可能希望在加载表单后立即移动下面的建议代码:这是允许您设置字段值的完整 sn-p:
/// Load the form from the model:
$this->form = $this->get('Form');
// Check for errors.
if (count($errors = $this->get('Errors')))
throw new Exception(implode("\n", $errors));
//... some logic ...
$this->form->setValue('businessid',null,$businessId);
$this->form->setFieldAttribute( 'businessid', 'readonly', 'true' );
【讨论】:
setFieldAttribute 应该是正确的调用,但是对于单选按钮,我完全不清楚(无论如何对我来说)我应该如何指示我想要“检查”哪些按钮,因为它们都有同名属性 ( jform[starttime_ampm] ) - 作为一组单选按钮应该......并且 setFieldAttribute 使用“名称”来确定要为其设置属性的字段。我认为这可能是该方法中的一个漏洞,因为单选按钮与其他类型的表单字段“不同”。我可能不得不放弃并转到不同的字段类型来设置/获取信息。 不,setValue('starttime_ampm',null,'am'); null 代表我猜应该为空的组; 'am' 是代表 'am' 的单选按钮的值,只需在此处输入您想要的任何值。最后一个考虑因素:您是否考虑过编写一个自定义字段来输入日期/时间,以便您可以将此功能偏移到该字段,然后该字段将保存一个简单的日期时间,并且只具有增强显示/编辑的逻辑 @Riccardo-Zorn 使用 setValue 的建议是正确的。技巧的另一部分似乎是我无法在此过程中使用 $this->form->getValue('fielnamewhatever') 检索表单值,但我发现我可以使用 $this->item 获取它们->fieldnamewhatever ...这对我来说似乎有点奇怪...“form->getValue”方法不应该检索字段值吗? item->fieldnamewhatever 不应该是私有的吗?谢谢里卡多。我不知道如何评价这个回复。 不客气,只需按答案左上角的“向上”箭头,您应该也会看到一个复选标志以接受它。以上是关于如何动态设置单选按钮的 'checked' 属性。的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Javascript 更改 HTML 单选按钮选择?