Cakephp 2.45在输入中设置文本格式,在字母之间包含“-”

Cakephp 2.45在输入中设置文本格式,在字母之间包含“-”,cakephp,text,input,format,Cakephp,Text,Input,Format,我需要制作一个如下格式的输入框: x-x-xx-xxxxx 当他们输入第一个x时,它会显示为x,然后下一个输入的是x-x,以此类推,有点像电话号码 以下是我当前的输入: 型号: 控制器: $conditions = array(); if ($userId) { $conditions['UserFirearm.user_id'] = $userId; } $sel_rffl=array(); $sel_rffl = $this->UserFirearm->getAllFflNums

我需要制作一个如下格式的输入框: x-x-xx-xxxxx 当他们输入第一个x时,它会显示为x,然后下一个输入的是x-x,以此类推,有点像电话号码

以下是我当前的输入: 型号:

控制器:

$conditions = array();
if ($userId) {
$conditions['UserFirearm.user_id'] = $userId;
}
$sel_rffl=array();
$sel_rffl = $this->UserFirearm->getAllFflNums($this->request->data['UserFirearm']   ['user_id'] = $userId);
$this->set(compact('sel_rffl'));`
我的看法是:

echo $this->Form->input('received_ffl_number', array(
'empty' => 'enter a vaild ffl number',
'label' => 'FFL Number',
'options'=> $sel_rffl,
'id' => 'received_ffl_number',
));
任何帮助都将不胜感激。
Jeff

如果您希望这种情况在运行中发生,则需要使用JavaScript。因此,只有当您希望用户直观地看到虚线以方便使用时,才应该这样做,不要使用虚线将数据像那样保存在数据库中。如果您希望这样做,则应在模型的beforeSave方法中使用数据建模。使用jQuery的JavaScript解决方案如下所示:

$('#received_ffl_number').keyup(function(event) {
  // Add dashes after the 1st, 3rd and 6th letter/digit
  if (
    $('#received_ffl_number').val().length == 1 ||
    $('#received_ffl_number').val().length == 3 ||
    $('#received_ffl_number').val().length == 6
  ) {
      // Unless the pressed key is backspace or delete, append a dash
      if (event.which != 8 && event.which != 46) {
          $(this).val($(this).val() + "-");
      }
  }
});

如果您希望在用户键入时发生这种情况,那么当然这必须发生在客户端——意思是:JavaScriptThank,这是一种快速而有洞察力的帮助
$('#received_ffl_number').keyup(function(event) {
  // Add dashes after the 1st, 3rd and 6th letter/digit
  if (
    $('#received_ffl_number').val().length == 1 ||
    $('#received_ffl_number').val().length == 3 ||
    $('#received_ffl_number').val().length == 6
  ) {
      // Unless the pressed key is backspace or delete, append a dash
      if (event.which != 8 && event.which != 46) {
          $(this).val($(this).val() + "-");
      }
  }
});