web-dev-qa-db-ja.com

値としてスペースを持つフィールドを使用したフォーム検証

これは、必須である管理側フォームのフィールドです。

<field name="exam_name" 
type="text"
label="Name"
required="true" />

フォームでこのフィールドを空(null)にすると、検証エラーInvalid Fieldが表示されます。

しかし、スペースを残すと、データベースに保存されているページとスペースが送信されます。

特定のフィールドに空ではなくスペースがある場合でもフォームを検証する方法はありますか?

1
Malaiselvan

クライアント側の検証を使用できます。したがって、最初に以下をフォームビューに追加します(Joomlaのバージョンに応じて選択します)。

JHtml::_('behavior.formvalidation'); // Joomla 3.3
JHtml::_('behavior.formvalidator');  // Joomla 3.4

次に、form-validateクラスをフォームに追加して、次のようにします。

<form class="form-validate">

次に、必要なクラスを次のようにフォームフィールドに追加します。

<field name="exam_name" class="required validate-custom"

次に、フォームの送信ボタンにも同じように適用します。

<input type="submit" class="required validate-custom"

そして最後に、次のjQueryを使用できます。

jQuery(document).ready(function($){
    document.formvalidator.setHandler('custom', function (value) {
        // Perform your validation for blank spaces
        // You could use a regex or maybe trim the value
        // Whatever method you prefer
    });
});
1
Lodder

モデルがJModelAdminまたはJModelFormを拡張する場合、モデルの検証機能を使用して、データベースに保存する前にクライアント入力を検証できます。

class MyComponentModelForm extends JModelAdmin
{

  ....
  ....

  /* Override */
  public function validate($form, $data, $group = null)
  {
     $data = parent::validate($form, $data, $group = null);
     if(!$data || empty($data['myfield']))
     {
       JFactory::getApplication()->enqueueMessage(JText::_('COM_MYCOMPONENT_FIELD_REQUIRED'));
       return false;
     }

    return $data;
  }
}
1
Nagarjun