Добавить к input onkeyup

Главные вкладки

Аватар пользователя venji venji 12 ноября 2015 в 16:36

Господа как добавить к input фильтра onkeyup="this.value = this.value.replace(/[^0-9]/, '')"
Есть вот такой:
<?php<input class="form-control form-text" type="text" id="edit-field-stats-value" name="field_stats_value" value="" size="30" maxlength="128">?>
А нужно вот такой
<?php<input  onkeyup="this.value = this.value.replace(/[^0-9]/, '')"   class="form-control form-text" type="text" id="edit-field-stats-value" name="field_stats_value" value="" size="30" maxlength="128">?>

Комментарии

Аватар пользователя bumble bumble 13 ноября 2015 в 11:35

В template.php текущей темы:

UPD

function ИМЯ_ТЕМЫ_form_alter(&$form, $form_state, $form_id){
  if($form['#id'] == 'ID_ФОРМЫ'){
    $form['ИМЯ_ПОЛЯ']['#attributes'] = array('onkeyup' => array('this.value = this.value.replace(/[^0-9]/, \'\')'));
  }
}
Аватар пользователя venji venji 12 ноября 2015 в 17:15

Чет не выходит, делаю

function аmp_form_alert(&$form, $form_state, $form_id){
        if($form['#id'] == 'views_exposed_form_status_page'){
                $form['edit_field_stats_value']['#attributes'] = array('onkeyup' => array('this.value = this.value.replace(/[^0-9]/, \'\')'));
        }
}

из

<form action="/company/contacts/status" method="get" id="views-exposed-form-status-page" accept-charset="UTF-8" class="jquery-once-1-processed"><div><div class="views-exposed-form">
  <div class="views-exposed-widgets clearfix">
          <div id="edit-field-stats-value-wrapper" class="views-exposed-widget views-widget-filter-field_stats_value">
                  <label for="edit-field-stats-value">
            Введите номер договора для получения статуса          </label>
                        <div class="views-widget">
          <div class="form-item form-item-field-stats-value form-type-textfield form-group"><input class="form-control form-text" type="text" id="edit-field-stats-value" name="field_stats_value" value="" size="30" maxlength="128"></div>        </div>
              </div>
                    <div class="views-exposed-widget views-submit-button">
      <button type="submit" id="edit-submit-status" name="" value="Применить" class="btn btn-info form-submit">Применить</button>
    </div>
      </div>
</div>
</div></form>
Аватар пользователя bumble bumble 12 ноября 2015 в 17:31

1. Исправьте $form['#id'] == 'views_exposed_form_status_page' на $form['#id'] == 'views-exposed-form-status-page'
2. $form['edit_field_stats_value'] - проверьте для того ли поля добавляете. Используйте devel.

Аватар пользователя venji venji 13 ноября 2015 в 11:44
function amp_form_alter(&$form, $form_state, $form_id) {
        if($form['#id'] == 'views-exposed-form-status-page') {
                $form['edit-field-stats-value']['#attributes'] = array('onkeyup' => array('this.value = this.value.replace(/[^0-9]/, \'\')'));
        }
}

падает в белый экран

Аватар пользователя bumble bumble 13 ноября 2015 в 12:42
function amp_form_alter(&$form, $form_state, $form_id) {
        if($form['#id'] == 'views-exposed-form-status-page') {
                $form['edit_field_stats_value']['#attributes'] = array('onkeyup' => array('this.value = this.value.replace(/[^0-9]/, \'\')'));

        }

}

Аватар пользователя bumble bumble 13 ноября 2015 в 12:44

Проверьте, "edit_field_stats_value" должно соответствовать идентификатору фильтра (филдсет "ЕЩЕ" в самом низу настроек раскрытого фильтра).

Аватар пользователя venji venji 13 ноября 2015 в 13:19

В самом низу где еще field_stats_value и того

function amp_form_alter(&$form, $form_state, $form_id) {
if($form['#id'] == 'views-exposed-form-status-page') {
$form['field_stats_value']['#attributes'] = array('onkeyup' => array('this.value = this.value.replace(/[^0-9]/, \'\')'));
}
}

Падает в белый экран, включил вывод ошибок:

Fatal error: Cannot redeclare amp_form_alter() (previously declared in /home/mag/public_html/site.ru/sites/all/themes/amp/template.php:15) in /home/mag/public_html/site.ru/sites/all/themes/amp/template.php on line 30

Аватар пользователя venji venji 13 ноября 2015 в 13:20

Посмотрел на 15 строку а там плейсхолдер

function amp_form_alter(&$form, &$form_state, $form_id) {
   if(in_array($form_id, array( 'webform_client_form_97','webform_client_form_99'))) {
     foreach ($form["submitted"] as $key => $value) {
         if (in_array($value["#type"], array("webform_number"))) {
             $form["submitted"][$key]['#attributes']["placeholder"] = t("+7  ( ... )  ...  ..  ..");
          }
      }
  }
}

Убрал его и все заработало !

Что в нм не так то теперь?

Аватар пользователя bumble bumble 13 ноября 2015 в 13:24

2 раза вызывали функцию amp_form_alter ?
Нужно выполнять внутри уже вызванной функции:

<?php
function amp_form_alter(&$form, &$form_state$form_id) {
  if(
in_array($form_id, array( 'webform_client_form_97','webform_client_form_99'))) {
    foreach (
$form["submitted"] as $key => $value) {
      if (
in_array($value["#type"], array("webform_number"))) {
        
$form["submitted"][$key]['#attributes']["placeholder"] = t("+7  ( ... )  ...  ..  ..");
      } 
    }
  }
  if(
$form['#id'] == 'views-exposed-form-status-page') {
    
$form['field_stats_value']['#attributes'] = array('onkeyup' => array('this.value = this.value.replace(/[^0-9]/, \'\')'));
  }
}
?>