Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 17 Ответов
  • 2022 Просмотров
*

One

  • Захожу иногда
  • 282
  • 3 / 0
Поле телефон
« : 24.12.2013, 17:02:38 »
При оформлении заказа есть поле "Телефон", с типом "text". Надо сделать так, чтобы вводить можно было только цифры и это делается вроде как таким образом
Код
<input onkeypress="if(event.keyCode<48 || event.keyCode > 57)event.returnValue=false">
, но не могу найти файл где нужно ввести этот код. Помогите решить эту задачу.
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Re: Поле телефон
« Ответ #1 : 25.12.2013, 01:03:12 »
\administrator\components\com_virtuemart\classes\ps_userfield.php
после стр.369:  switch( $field->name ) {
добавьте ваш вариант поля.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

One

  • Захожу иногда
  • 282
  • 3 / 0
Re: Поле телефон
« Ответ #2 : 25.12.2013, 13:52:08 »
\administrator\components\com_virtuemart\classes\ps_userfield.php
после стр.369:  switch( $field->name ) {
добавьте ваш вариант поля.
Попробовал этот код прописать сразу после {, тогда пропадают поля вообще, появляется белый фон.

После скобки { идет такой код
Код
case 'title':
  $ps_html->list_user_title($db->sf('title', true, false), "id=\"title_field\"");
  break;
Не могу понять куда впихнуть
Код
<input onkeypress="if(event.keyCode<48 || event.keyCode > 57)event.returnValue=false">
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Re: Поле телефон
« Ответ #3 : 26.12.2013, 00:44:29 »
Перед
Код
default:
вставьте
Код
case 'phone_1':	   			
   $maxlength = $field->maxlength ? 'maxlength="'.$field->maxlength.'"' : '';
   echo '<input type="text" id="'.$field->name.'_field" name="'.$field->name.'" size="'.$field->size.'" value="'. ($db->sf($field->name, true, false)?$db->sf($field->name, true, false):'').'" class="inputbox" '.$maxlength . $readonly . ' />'."\n";
   break;
и измените "<input..." , как вам надо.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

One

  • Захожу иногда
  • 282
  • 3 / 0
Re: Поле телефон
« Ответ #4 : 27.12.2013, 15:33:16 »
Не получается. Перед каждым default: пробовал добавлять код
У меня поле называется phone_2
Код
case 'phone_2':	   			
   $maxlength = $field->maxlength ? 'maxlength="'.$field->maxlength.'"' : '';
   echo '<input type="text" onkeypress="if(event.keyCode<48 || event.keyCode > 57)event.returnValue=false" id="'.$field->name.'_field" name="'.$field->name.'" size="'.$field->size.'" value="'. ($db->sf($field->name, true, false)?$db->sf($field->name, true, false):'').'" class="inputbox" '.$maxlength . $readonly . ' />'."\n";
   break;
Можно вводить как цифры, так и любой другой знак/букву
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Re: Поле телефон
« Ответ #5 : 27.12.2013, 16:35:03 »
Перед каждым default: пробовал добавлять код
Я имел ввиду тот default , который в блоке switch( $field->name ) {...}
Цитировать
после стр.369:  switch( $field->name ) {

Решал когда-то аналогичный вопрос подключением jquery.maskedinput-1.3.js .
Код
case 'vm_phone_1_code':
case 'vm_phone_2_code':
case 'vm_fax_code':
  if ( ($page == "shop.registration") || ($page == "account.shipto") || ($page == "account.billing") || ($page == "checkout.index") ) {    
    $maxlength = $field->maxlength ? 'maxlength="'.$field->maxlength.'"' : '';
    echo '+7 <input type="text" id="'.$field->name.'_field" name="'.$field->name.'" size="'.$field->size.'" value="'. ($db->sf($field->name, true, false)?$db->sf($field->name, true, false):'').'" class="inputbox" '.$maxlength . $readonly .' style="width:50px;" placeholder="код..." />';
    echo '<script type="text/javascript">
(function($) {
            $(document).ready(function() {
       $("#'.$field->name.'_field").mask("999?99",{placeholder:" "});
  });
})(jQuery);
        </script>';
  } else {
    $maxlength = $field->maxlength ? 'maxlength="'.$field->maxlength.'"' : '';
    echo '<input type="text" id="'.$field->name.'_field" name="'.$field->name.'" size="'.$field->size.'" value="'. ($db->sf($field->name, true, false)?$db->sf($field->name, true, false):'').'" class="inputbox" '.$maxlength . $readonly . ' style="width:50px;" />';
  }
  break;

case 'phone_1':
case 'phone_2':
case 'fax':
  if ( ($page == "shop.registration") || ($page == "account.shipto") || ($page == "account.billing") || ($page == "checkout.index") ) {
     $maxlength = $field->maxlength ? 'maxlength="'.$field->maxlength.'"' : '';
     echo '<input type="text" id="'.$field->name.'_field" name="'.$field->name.'" size="'.$field->size.'" value="'. ($db->sf($field->name, true, false)?$db->sf($field->name, true, false):'').'" class="inputbox" '.$maxlength . $readonly . ' style="width:80px;" placeholder="номер..." />';
      echo '<script type="text/javascript">
(function($) {
  $(document).ready(function() {
      $("#'.$field->name.'_field").mask("999-99?-99",{placeholder:" "});
  });
          })(jQuery);
        </script>';
  } else {
    $maxlength = $field->maxlength ? 'maxlength="'.$field->maxlength.'"' : '';
    echo '<input type="text" id="'.$field->name.'_field" name="'.$field->name.'" size="'.$field->size.'" value="'. ($db->sf($field->name, true, false)?$db->sf($field->name, true, false):'').'" class="inputbox" '.$maxlength . $readonly . ' style="width:80px;" />';
  }
  break;
Код сейчас не писал, выдрал с сайта, подгоняйте под себя.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

One

  • Захожу иногда
  • 282
  • 3 / 0
Re: Поле телефон
« Ответ #6 : 16.01.2014, 18:49:18 »
Попробовал добавить код, в поле ввода телефона появляется надпись "номер...", которая исчезает при появление курсора, вроде как и не плохо, но вводить можно не только цифры в этом поле.
*

One

  • Захожу иногда
  • 282
  • 3 / 0
Re: Поле телефон
« Ответ #7 : 16.01.2014, 18:50:18 »
А можно посмотреть образец, как этот код выглядит на сайте в оригинале?
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Re: Поле телефон
« Ответ #8 : 16.01.2014, 20:55:50 »
но вводить можно не только цифры в этом поле.
у вас на сайте подключены jQuery и jquery.maskedinput-1.3.js ?
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Поле телефон
« Ответ #9 : 16.01.2014, 21:06:50 »
у вас на сайте подключены jQuery и jquery.maskedinput-1.3.js ?
Скорее всего, нет.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

One

  • Захожу иногда
  • 282
  • 3 / 0
Re: Поле телефон
« Ответ #10 : 20.01.2014, 14:42:55 »
у вас на сайте подключены jQuery и jquery.maskedinput-1.3.js ?

JQuery подключен, а maskedinput - нет. Вот эти функции
Код
jQuery(function($){
   $("#date").mask("99/99/9999");
   $("#phone").mask("(999) 999-9999");
   $("#tin").mask("99-9999999");
   $("#ssn").mask("999-99-9999");
});
Надо вставлять в файле index.php или в файле ps_userfield.php?
*

One

  • Захожу иногда
  • 282
  • 3 / 0
Re: Поле телефон
« Ответ #11 : 20.01.2014, 16:24:01 »
Вот эти два файла, которые на сайте, в какую папку их надо добавить?
  • Uncompressed
  • Minified

В файле index.php такая картина

Код
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script src="jquery.maskedinput.js" type="text/javascript"></script>

В файл ps_userfield добавил
Код
case 'vm_phone_1_code':
case 'vm_phone_2_code':
case 'vm_fax_code':
  if ( ($page == "shop.registration") || ($page == "account.shipto") || ($page == "account.billing") || ($page == "checkout.index") ) {    
    $maxlength = $field->maxlength ? 'maxlength="'.$field->maxlength.'"' : '';
    echo '+7 <input type="text" id="'.$field->name.'_field" name="'.$field->name.'" size="'.$field->size.'" value="'. ($db->sf($field->name, true, false)?$db->sf($field->name, true, false):'').'" class="inputbox" '.$maxlength . $readonly .' style="width:50px;" placeholder="код..." />';
    echo '<script type="text/javascript">
(function($) {
            $(document).ready(function() {
       $("#'.$field->name.'_field").mask("999?99",{placeholder:" "});
  });
})(jQuery);
        </script>';
  } else {
    $maxlength = $field->maxlength ? 'maxlength="'.$field->maxlength.'"' : '';
    echo '<input type="text" id="'.$field->name.'_field" name="'.$field->name.'" size="'.$field->size.'" value="'. ($db->sf($field->name, true, false)?$db->sf($field->name, true, false):'').'" class="inputbox" '.$maxlength . $readonly . ' style="width:50px;" />';
  }
  break;

case 'phone_1':
case 'phone_2':
case 'fax':
  if ( ($page == "shop.registration") || ($page == "account.shipto") || ($page == "account.billing") || ($page == "checkout.index") ) {
     $maxlength = $field->maxlength ? 'maxlength="'.$field->maxlength.'"' : '';
     echo '<input type="text" id="'.$field->name.'_field" name="'.$field->name.'" size="'.$field->size.'" value="'. ($db->sf($field->name, true, false)?$db->sf($field->name, true, false):'').'" class="inputbox" '.$maxlength . $readonly . ' style="width:80px;" placeholder="номер..." />';
      echo '<script type="text/javascript">
(function($) {
  $(document).ready(function() {
      $("#'.$field->name.'_field").mask("999-99?-99",{placeholder:" "});
  });
          })(jQuery);
        </script>';
  } else {
    $maxlength = $field->maxlength ? 'maxlength="'.$field->maxlength.'"' : '';
    echo '<input type="text" id="'.$field->name.'_field" name="'.$field->name.'" size="'.$field->size.'" value="'. ($db->sf($field->name, true, false)?$db->sf($field->name, true, false):'').'" class="inputbox" '.$maxlength . $readonly . ' style="width:80px;" />';
  }
  break;

Можете объяснить пошагово?
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Re: Поле телефон
« Ответ #12 : 20.01.2014, 19:30:29 »
JQuery подключен, а maskedinput - нет. Вот эти функции
Код
jQuery(function($){
   $("#date").mask("99/99/9999");
   $("#phone").mask("(999) 999-9999");
   $("#tin").mask("99-9999999");
   $("#ssn").mask("999-99-9999");
});
Надо вставлять в файле index.php или в файле ps_userfield.php?
Это всего лишь примеры масок для разных полей. В моем коде выше уже есть маски:
$("#'.$field->name.'_field").mask("999?99",{placeholder:" "});
и
$("#'.$field->name.'_field").mask("999-99?-99",{placeholder:" "});

Вот эти два файла, которые на сайте, в какую папку их надо добавить?
  • Uncompressed
  • Minified
Один из них, лучше сжатый, в папку js шаблона, если есть. А вообще, куда хотите, только путь к ней (к файлу) правильно прописать надо будет.

Цитировать
Можете объяснить пошагово?
1. Подключаете скрипт маски в шаблоне (правильно прописываете путь).
2. Читаете доки, ищите вашу ситуацию, вставляете "свой" вариант маски.

Цитировать
В файл ps_userfield добавил
И что в результате? Скрипт маски подгружает (путь к файлу правильный)?
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

One

  • Захожу иногда
  • 282
  • 3 / 0
Re: Поле телефон
« Ответ #13 : 20.01.2014, 19:55:54 »
Этот файл jquery.maskedinput.min закинул в папку js шаблона
Путь в файле index.php прописал такой
Код
<script language="javascript" type="text/javascript" src="<?php echo $tmpTools->templateurl(); ?>/js/jquery.maskedinput.min.js"></script>
Скрипт не подгружается, всё без изменений в поле серым цветом пишется "номер..."
Целый день маюсь, зае*ался уже
*

One

  • Захожу иногда
  • 282
  • 3 / 0
Re: Поле телефон
« Ответ #14 : 21.01.2014, 19:52:10 »
Руководствуясь объяснениями с сайта http://digitalbush.com/projects/masked-input-plugin/ у меня не получается сделать маску.

В файле index.php скрипты подтянуты таким образом (файлы скриптов скинут в папу js шаблона сайта)
Код
<script language="javascript" type="text/javascript" src="<?php echo $tmpTools->templateurl(); ?>/js/jquery-1.8.3.min.js"></script>
<script language="javascript" type="text/javascript" src="<?php echo $tmpTools->templateurl(); ?>/js/jquery.maskedinput.min.js"></script>
В этом файле ещё что-то добавлять надо или нет?

Далее нужно создать маску, для поля телефон в VirtueMart 1.1.4 (в админке, управлениями полями, поле телефона имеет название phone_2), как я понял это делается в файле ps_userfield

Пожалуйста, объясните что именно я должен прописать в этом файле (ps_userfield), чтобы маска отображалась?
На сайте http://digitalbush.com/projects/masked-input-plugin/ есть такой код
Код
jQuery(function($){
$("#phone").mask("(999) 999-9999");
Что это значит $("#phone")? Может мне в файле ps_userfield как-то присвоить нужно phone? В php фактически ничего не понимаю


*

fsv

  • Moderator
  • 2765
  • 402 / 2
Re: Поле телефон
« Ответ #15 : 21.01.2014, 20:33:20 »
В файле index.php скрипты подтянуты таким образом
Скрипт маски подгружается? Если "нет", разберитесь сначала с подключением, что-то дальше делать бесполезно. Мне ничего не говорит "подтянуты таким образом", так как я не знаю код вашего шаблона. Делайте по аналогии с другими подключенными скриптами.

Что это значит $("#phone")?
элемент с id="phone"

В php фактически ничего не понимаю
Я не знаю, как уже подробнее объяснить, чем расписано выше с примером кода. Удачи.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

One

  • Захожу иногда
  • 282
  • 3 / 0
Re: Поле телефон
« Ответ #16 : 21.01.2014, 21:22:37 »
На сайте через FireBug в поле показывается вот так код
Код
<div id="phone_2_input" class="formField">
<input id="phone_2_field" class="inputbox" type="text" placeholder="Например: ***1234567" style="width:160px;" maxlength="10" value="" size="10" name="phone_2">
<script type="text/javascript">
(function($) {
$(document).ready(function() {
$("#phone_2_field").mask("999-99?-99",{placeholder:" "});
});
})(jQuery);
</script>
*

One

  • Захожу иногда
  • 282
  • 3 / 0
Re: Поле телефон
« Ответ #17 : 21.01.2014, 21:23:17 »
Цитировать
Скрипт маски подгружается?
Как проверить это?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться