2013-08-22 3 views
0

Я создал пользовательское поле из компонента Joomla Vik Rent Cars, идентификатором настраиваемого поля является «vrcf13». Как я могу принять только 8 числовых чисел?Конкретные числовые номера в одном настраиваемом поле

Код:

<table class="vrccustomfields"> 
    <?php 
    $currentUser = JFactory::getUser(); 
    $juseremail = !empty($currentUser->email) ? $currentUser->email : ""; 
    foreach ($cfields as $cf) { 
     if (intval($cf['required']) == 1) { 
      $isreq = "<span class=\"vrcrequired\"><sup>*</sup></span> "; 
     } else { 
      $isreq = ""; 
     } 
     if (!empty ($cf['poplink'])) { 
      $fname = "<a href=\"" . $cf['poplink'] . "\" id=\"vrcf" . $cf['id'] . "\" rel=\"{handler: 'iframe', size: {x: 750, y: 600}}\" target=\"_blank\" class=\"modal\">" . JText :: _($cf['name']) . "</a>"; 
      } else { 
      $fname = "<span id=\"vrcf" . $cf['id'] . "\">" . JText :: _($cf['name']) . "</span>"; 
          } 
     if ($cf['type'] == "text") { 
      $textmailval = intval($cf['isemail']) == 1 ? $juseremail : ""; 
     ?> 
        <tr><td align="right"><?php echo $isreq; ?><?php echo $fname; ?> </td><td><input type="text" name="vrcf<?php echo $cf['id']; ?>" value="<?php echo $textmailval; ?>" size="40" class="vrcinput"/></td></tr> 
     <?php 

     }elseif ($cf['type'] == "textarea") { 
     ?> 
        <tr><td valign="top" align="right"><?php echo $isreq; ?><?php echo $fname; ?> </td><td><textarea name="vrcf<?php echo $cf['id']; ?>" rows="5" cols="30" class="vrctextarea"></textarea></td></tr> 
     <?php 

     }elseif ($cf['type'] == "date") { 
     ?> 
        <tr><td valign="top" align="right"><?php echo $isreq; ?><?php echo $fname; ?> </td><td><?php echo JHTML::_('calendar', '', 'vrcf'.$cf['id'], 'vrcf'.$cf['id'].'date', $nowdf, array('class'=>'vrcinput', 'size'=>'10', 'maxlength'=>'19')); ?></td></tr> 
     <?php 

     }elseif ($cf['type'] == "select") { 
      $answ = explode(";;__;;", $cf['choose']); 
      $wcfsel = "<select name=\"vrcf" . $cf['id'] . "\">\n"; 
      foreach ($answ as $aw) { 
       if (!empty ($aw)) { 
        $wcfsel .= "<option value=\"" . $aw . "\">" . $aw . "</option>\n"; 
       } 
      } 
      $wcfsel .= "</select>\n"; 
     ?> 

ответ

0

Если я вас правильно понял вы хотите запретить пользователю ввода ничего нечисловое и больше, чем 8 символов, чтобы текстовое поле. Это может быть достигнуто с помощью Javascript. Это предполагает, что у вас есть jQuery.

$(function() { 
    $("#number").keydown(function(key) { 
     // This will only ensure the key pressed is a number (excludes the numpad) 
     if(key.keyCode < 48 || key.keyCode > 57) { 
      return false; 
     }               
     // Prevent more than 8 insertions 
     if($(this).val().length > 8) { 
      return false; 
     } 
    }); 
}); 

Как уже упоминалось в комментариях, это обеспечит только то, что нажата цифровая клавиша, и не обслуживает цифровую клавиатуру. Это также предотвратит удаление пользователя и т. Д. Вы можете выследить полный список keycodes, который вы бы хотели разрешить.

Альтернативой использованию JS будет проверка значения сервера после отправки. Вы можете использовать PHP filter_var() с флагом FILTER_VALIDATE_INT вместе с strlen()

+0

Хорошо, спасибо :), но как я могу связать его только с текстовым полем «vrcf13»? – Ernie

+0

Я не знаю, что это значит, потому что ваш код не упоминает 'vrcf13'. Я предполагаю, что это ваш идентификатор HTML? Если да, замените '$ (" # number ")' на '$ (" # vrcf13 ")' из моего примера – juco

+0

Спасибо: D где я, а код в моем коде? – Ernie

Смежные вопросы