Joomla表单验证缺少错误消息

时间:2013-02-15 10:51:26

标签: forms validation joomla

我正在尝试为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>

那么,如何在验证中添加文字?我是否需要为我的组件创建语言文件?

3 个答案:

答案 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>