Forms Joomla表单验证缺少错误消息
我正在为Joomla开发我的第一个组件。我已经安装了Joomla 3,一切都很顺利 我想在前端添加一个表单验证(客户端),在那里我有一个提交表单 我的代码是: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
<?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');现在,它在顶部打印错误!伟大的非常感谢您的时间和帮助!:)