Forms Joomla表单验证缺少错误消息

Forms Joomla表单验证缺少错误消息,forms,validation,joomla,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

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


那么,如何向验证中添加文本?我需要为我的组件创建语言文件吗?

您需要将表单提交按钮更改为
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>

提交表格
/*重写joomla.javascript,因为表单验证不适用于工具栏*/
函数submitbutton(){
var f=document.adminForm;
if(document.formvalidator.isValid(f)){
document.adminForm.submit();
返回true;
}
否则{
var msg=新数组();
msg.push('输入无效,请再次验证!');
if($('email').hasClass('invalid')){
msg.push(“”);
}
警报(msg.join('\n'));
返回false;
}     
}
这将在客户端而不是服务器端验证表单。
有关更多信息,请检查此-

并确保已在index.php中添加此代码

<jdoc:include type="message" />

我刚刚遇到了这个问题。问题是您没有与表单字段关联的标签,Joomla验证代码从标签文本生成错误消息

如果不希望标签显示,则将其设置为隐藏(如果使用引导,则使用隐藏类)。必须向标签中添加for子句。如果您也给它一个id,该id设置为输入id+'-lbl',则它将优化标签查找的速度

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

表格标签
提交表格

关于我需要使用标签的状态的文档。如果我选择使用标签,那么表单甚至不会被提交。所以我需要使用标签,表单确实会被提交。当该字段无效时,它会显示一个错误,如果该字段有效,它会提交表单-但不会在错误消息中写入任何内容(注意空的DIV标记)@user2075107:您尝试了我的建议吗?是的,我尝试了。然后,表单甚至不会使用sumbit(我认为这是jquery的错误)。如果我使用标记,那么如果字段有效,表单就会被提交。如果字段无效,它将显示“error”div,但其中没有任何内容(无文本),您所引用的文档不提供消息功能。error container在服务器端出错时给出错误。我已更新了代码。这可能会对您有所帮助。太好了!这很有效。。。我刚刚修改了脚本,所以没有添加alertbox,而是添加了:document.getElementById('system-message')。innerHTML=msg.join('\n');现在,它在顶部打印错误!伟大的非常感谢您的时间和帮助!:)