2013-02-15 37 views
3

我想爲Joomla開發我的第一個組件。我已經安裝了Joomla 3,而且事情很好。Joomla表單驗證缺少錯誤信息

我想在前端添加表單驗證(客戶端),我有一個提交表單。

我的代碼是:

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

那麼,如何向驗證中添加文本?我需要爲我的組件創建一個語言文件嗎?

回答

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

+0

上http://docs.joomla.org/Client-side_form_validation的文檔指出我需要使用

+0

@ user2075107:您嘗試了我建議的內容嗎? – Irfan 2013-02-15 11:40:10

+0

是的,我做到了。然後,表單甚至不會sumbit(我認爲這是一些jQuery錯誤)。如果我使用

1

也確保你已經在index.php

<jdoc:include type="message" /> 
添加該代碼