3

ここでは税フィールドを % で入力していますが、整数以外の 2.5,0.5 などの値を入力するとエラーが発生します。これが検証用の私のコードです。浮動小数点数を入力するためのアイデア

function _set_rules()
{
  $this->form_validation->set_rules('pst','PST','trim|required|is_natural|numeric|
   max_length[4]|callback_max_pst');
  $this->form_validation->set_rules('gst','GST','trim|required|is_natural|numeric|
max_length[4]|callback_max_gst');
}
function max_pst()
 {
   if($this->input->post('pst')>100)
    {
      $this->form_validation->set_message('max_pst',' %s Value Should be less than or equals to 100');
return FALSE;
    }
   return TRUE;
  }
function max_gst()
  {
    if($this->input->post('gst')>100)
      {
    $this->form_validation->set_message('max_gst',' %s Value Should be less than or equals to 100');
    return FALSE;
    }
   return TRUE;
  }
</code>
4

3 に答える 3

15

is_natural入力規則から を削除し、greater_than[0]andに置き換えます。less_than[100]

function _set_rules()
{
  $this->form_validation>set_rules('pst','PST','trim|required|
  greater_than[0]|less_than[100]|max_length[4]|callback_max_pst');
  $this->form_validation->set_rules('gst','GST','trim|required|
  greater_than[0]|less_than[100]|max_length[4]|callback_max_gst');
}

greater_than[0]適用されますnumeric

于 2012-12-29T04:57:11.837 に答える
3

codeigniter のドキュメントから:

is_natural フォーム要素に自然数 (0、1、2、3 など) 以外が含まれている場合は FALSE を返します

明らかに、2.5,0.5 のような値は自然数ではないため、検証に失敗します。floatval()PHP関数で値を解析した後、コールバックを使用して値を返すことができます。

それが役に立てば幸い!

于 2012-12-29T04:50:54.060 に答える
3

これを試すことができます:

function _set_rules()
{
  $this->form_validation>set_rules('pst','PST','trim|required|
  numeric|max_length[4]|callback_max_pst');
  $this->form_validation->set_rules('gst','GST','trim|required|
  numeric|max_length[4]|callback_max_gst');
}

function max_pst($value) {
    $var = explode(".", $value);
    if (strpbrk($value, '-') && strlen($value) > 1) {
        $this->form_validation->set_message('max_pst', '%s accepts only 
        positive values');
        return false;
    }
    if ($var[1] > 99) {
        $this->form_validation->set_message('max_pst', 'Enter value in 
        proper format');
        return false;
    } else {
        return true;
    }
}

このコードがお役に立てば幸いです.... :)

于 2012-12-29T04:51:29.917 に答える