Дата регистрации в Magento дата рождения в одном поле
Я хочу, чтобы в моей форме регистрации клиентов поле даты рождения было в одном поле. Теперь это в 3 областях. Так что у меня есть
<div class="input-box customer-dob">
<input type="text" id="<?php echo $this->getFieldId('dob') ?>" name="<?php echo $this->getFieldName('dob') ?>"
class="input-text validation-custom required-entry"/>
</div>
Но проверка не работает. У вас есть какие-нибудь идеи?
4 answers
В вашем коде вместо validate-custom укажите validate-date в качестве класса для поля ввода.
Сценарий проверки для этого можно найти в js/prototype/validation.js строка 503
'validate-date', 'Please enter a valid date.', function(v) {
var test = new Date(v);
return Validation.get('IsEmpty').test(v) || !isNaN(test);
}],
Отличный вопрос!
Для этого вам не нужен jQuery. Вы можете сделать это с помощью встроенного средства проверки форм Magento. Сначала javascript для настройки формы для проверки должен быть помещен в ваш шаблон формы:
<script type="text/javascript">
var myForm= new VarienForm('[your form id]', true);
</script>
Теперь подготовьте поля формы , добавив соответствующие классы css.
Не может быть числа больше, чем 9.99
<input type="text" class="required-entry validate-digits-range digits-range-0-9.99"/>
В полях нет пробелов
<input type="text" class="required-entry validate-alphanum"/>
Вот и все! Для большего конкретные случаи использования вам придется добавить пользовательские правила проверки:
Только числовые поля должны содержать .00 для подтверждения от 1 до 1.00
Validation.add('validate-float','Input must be in the form of 0.00',function(v){
return Validation.get('IsEmpty').test(v) || (!/\./.test(v));
});
, который затем проверяется следующим образом:
<input type="text" class="required-entry validate-float"/>
Буквы должны быть прописными
Это похоже, регулярное выражение должно проверять диапазон прописных букв:
Validation.add('validate-uppercase','Input must be in uppercase',function(v){
return Validation.get('IsEmpty').test(v) || (!/^[A-Z]+$/.test(v));
});
И используется как:
<input type="text" class="required-entry validate-uppercase"/>
Пожалуйста, перейдите по этой ссылке, надеюсь, это поможет вам:
http://inchoo.net/ecommerce/magento/magento-frontend/magento-form-field-ajax-validation/
Решение очень простое – взломайте свой
/js/varien/js.js
Файл и измените это:
var error = false, day = parseInt(this.day.value) || 0, month = parseInt(this.month.value) || 0, year = parseInt(this.year.value) || 0;
, который идет о line 437
, к этому:
var error = false, day = parseInt(this.day.value, 10) || 0, month = parseInt(this.month.value, 10) || 0, year = parseInt(this.year.value, 10) || 0;
И это все!
Чего не делает validate-date, так это того, что он также принимает футуристическую дату.
Я создал проверку класса (используя только прототип) посмотрите, наслаждайтесь кодированием
<input type="hidden" name="dob" class="validate-dob" id="dob" current-date="<?php echo date('m/d/Y')?>"/>
Validation.add('validate-dob','Please enter a valid birthday',function(value,el){`enter preformatted text here`
if(value != ''){
var pattern =/^(0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])[\/\-]\d{4}$/;
var month = value.substring(0,2);
var day = value.substring(3,5);
var year = value.substring(6,10);
var current_date = el.readAttribute('current-date');
var current_month = current_date.substring(0,2);
var current_day = current_date.substring(3,5);
var current_year = current_date.substring(6,10);
var dob = new Date(year, month - 1, day);
var current_date = new Date(current_year, current_month - 1, current_day);
if(!pattern.test(value) || (current_date <= dob)){
return false;
}
}
return true;
});