嘿,我有一个数据输入模块。
我希望在允许保存之前确保两个字段完全相同。如果他们不匹配(类似于网站在提交之前确保电子邮件是相同的),我希望它能说出像#34;确保这两个字段匹配"在他们这样做之前不要保存。
我该怎么做?这是阻止我推出这个模块的唯一因素。
谢谢!
答案 0 :(得分:1)
你可以很容易地解决这个问题。
假设您要确认以下两个字段匹配:
username_c
和
username_compare_c
在名为force_username_compare.js的模块目录中创建一个javascript文件,并将以下代码添加到其中:
addToValidateComparison('EditView', 'username_c', '', true, 'Compare Test', 'username_compare_c');
然后你需要从view.edit中为你的模块吐出js。假设您没有自定义view.edit设置,请创建以下文件并添加以下代码: 定制/模块/ YOUR_MODULE_NAME /视图/ view.edit.php
class YOUR_MODULE_NAMEViewEdit extends ViewEdit
{
public function display()
{
// make sure it works in the subpanel too
$this->useForSubpanel = true;
// definitely need to call the parent method
parent::display();
// make sure to echo this out AFTER parent::display() call
echo '<script type="text/javascript" src="custom/modules/YOUR_MODULE_NAME/force_username_compare.js"></script>';
}
}
addToValidateComparison将为您完成所有艰苦工作,包括在字段不匹配时阻止记录保存。 “比较测试”参数是字段不匹配时显示的消息。继续把它改成你想要的任何东西。
最后注意事项:这是一篇很好的文章,介绍了将javascript加入视图的所有不同方法:https://www.atcoresystems.com/blog/adding-custom-javascript-to-a-sugarcrm-view。我使用了视图控制器方法,因为我们不希望我们的javascript在DOM中存在字段后才能运行,我不想写jquery是否因此可以随时访问document.ready方法。