Open Johan-An opened 2 years ago
因为radio的联动切换只是切换多个层的显示和隐藏。你层内的select使用了相同的id,而select是通过className(未设置的话默认值和id相等)来绑定ajax的地址的,所以会被覆盖。 解决方式就是如果设置了elementName,则优先使用elementName。这样就可以避免相同的id导致地址被覆盖。
$form->select('column', 'label')->setElementName('s1');
$form->select('column', 'label')->setElementName('s2');
因为radio的联动切换只是切换多个层的显示和隐藏。你层内的select使用了相同的id,而select是通过className(未设置的话默认值和id相等)来绑定ajax的地址的,所以会被覆盖。 解决方式就是如果设置了elementName,则优先使用elementName。这样就可以避免相同的id导致地址被覆盖。
$form->select('column', 'label')->setElementName('s1'); $form->select('column', 'label')->setElementName('s2');
非常感谢!!!解决了,好像->setElementName('s1')
要放在->ajax()
之前。
因为radio的联动切换只是切换多个层的显示和隐藏。你层内的select使用了相同的id,而select是通过className(未设置的话默认值和id相等)来绑定ajax的地址的,所以会被覆盖。 解决方式就是如果设置了elementName,则优先使用elementName。这样就可以避免相同的id导致地址被覆盖。
$form->select('column', 'label')->setElementName('s1'); $form->select('column', 'label')->setElementName('s2');
非常感谢!!!解决了,好像
->setElementName('s1')
要放在->ajax()
之前。
hi 刚刚发现setElementName会导致select提交的name变更,所还推荐改为使用setElementClass
因为radio的联动切换只是切换多个层的显示和隐藏。你层内的select使用了相同的id,而select是通过className(未设置的话默认值和id相等)来绑定ajax的地址的,所以会被覆盖。 解决方式就是如果设置了elementName,则优先使用elementName。这样就可以避免相同的id导致地址被覆盖。
$form->select('column', 'label')->setElementName('s1'); $form->select('column', 'label')->setElementName('s2');
非常感谢!!!解决了,好像
->setElementName('s1')
要放在->ajax()
之前。hi 刚刚发现setElementName会导致select提交的name变更,所还推荐改为使用setElementClass 是的,表单刚刚提交不上去了,现在可以了
Description:
使用Radio组件表单联动的时候出现了一下问题: 期望:通过radio的组件切换,来实现radio组件中when 闭包中的select组件加载不同数据源(->ajax())的需求。 目前表现:无论怎么切换,第一个when闭包里面的ajax的URL总会被第二个when闭包里面的覆盖。这里比较特殊的一点是,两个when闭包里的select组件是同一个表单字段
prizeCode
,应该跟这个有很大的关系。备注:第一个闭包中的
->ajax('/admin/third-party/0/products')
获取的是优惠券。第二个闭包->ajax('/admin/third-party/1/products')
获取的是真实商品。Steps To Reproduce:代码如下:
希望大家给点建议。谢谢!