我正在尝试为Joomla开发我的第一个组件。我安装了Joomla 3,事情进展顺利。
我想在前端添加表单验证(客户端),我有一个提交表单。
我的代码是:
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// Add form validation
JHTML::_('behavior.formvalidation');
?>
<form class="form-validate" id="myForm" method="post">
<input name="email" type="text" class="required validate-email" size="30" />
<button type="submit" class="validate">Submit form</button>
</form>
验证有效,但不显示任何消息错误 - 只是一个字段。错误字段的HTML是:
<div id="system-message-container">
<div id="system-message" class="alert alert-error">
<h4 class="alert-heading"></h4>
<div></div>
</div>
</div>
那么,如何在验证中添加文字?我是否需要为我的组件创建语言文件?
答案 0 :(得分:2)
您需要将表单提交按钮更改为input
试试这个 -
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// Add form validation
JHTML::_('behavior.formvalidation');
?>
<form class="form-validate" id="myForm" method="post">
<input name="email" type="text" class="required validate-email" size="30" />
<input type="submit" name="submit" value="Submit" />
</form>
<强>更新强>: - 你也可以尝试这个 -
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// Add form validation
JHTML::_('behavior.formvalidation');
?>
<form name="adminForm" id="myForm" method="post" onsubmit="return submitbutton();">
<input id="email" name="email" type="text" class="required validate-email" size="30" />
<button type="submit" class="validate">Submit form</button>
</form>
<script type="text/javascript">
/* Override joomla.javascript, as form-validation not work with ToolBar */
function submitbutton() {
var f = document.adminForm;
if (document.formvalidator.isValid(f)) {
document.adminForm.submit();
return true;
}
else {
var msg = new Array();
msg.push('Invalid input, please verify again!');
if($('email').hasClass('invalid')){
msg.push('<?php echo JText::_('Invalid Email')?>');
}
alert (msg.join('\n'));
return false;
}
}
</script>
这将在客户端验证表单,但不在服务器端验证。 有关详细信息,请查看此内容 - http://docs.joomla.org/Form_validation
答案 1 :(得分:1)
还要确保在index.php中添加了此代码
<jdoc:include type="message" />
答案 2 :(得分:1)
我刚刚遇到这个问题。问题是您没有与表单字段关联的标签,Joomla验证代码会从标签文本构建错误消息。
如果您不想显示标签,请将其设置为隐藏(如果您使用引导程序使用隐藏的类)。您必须在标签中添加for子句。如果你还给它一个id,它是输入id +&#39; -lbl&#39;的设置,那么它将优化标签查找的速度。
<form class="form-validate" id="myForm" method="post">
<label class="hidden" for="inputid" id="inputid-lbl">Form label</label>
<input id="inputid" name="email" type="text" class="required validate-email" size="30" />
<button type="submit" class="validate">Submit form</button>
</form>