3

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

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

4

3 回答 3

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

于 2013-02-15T11:08:33.117 回答
1

还要确保您已在 index.php 中添加此代码

<jdoc:include type="message" />
于 2015-05-22T04:43:24.500 回答
1

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

如果您不希望标签出现,请将其设置为隐藏(如果您使用引导程序,请使用隐藏类)。您必须在标签中添加一个 for 子句。如果您还给它一个 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>
于 2018-03-29T18:20:03.300 回答