Событие onkey - проблема с отключенной кнопкой - PullRequest
0 голосов
/ 06 октября 2010

Объяснение: В начале значение поля YYYY-MM-DD. если пользователь удаляет значение и ничего не вводит, кнопка «ОК» должна быть отключена. если пользователь удаляет значение и вводит новое значение, кнопка «ОК» должна быть включена. Код работает только для второго случая.

function ChangeOkButton()
   {
     if(document.getElementById('fromDate').value == null)
        {  document.getElementById('save').disabled = true;  }
     else {document.getElementById('save').disabled = false;  }
   }  

<input type="text" name="fromDate" id="fromDate" value="YYYY-MM-DD" onkeypress="ChangeOkButton();"/>

Возможно ли это?

Спасибо!

1 Ответ

0 голосов
/ 06 октября 2010

Эта функция не очень полезна для такого типа управления, поскольку вы можете перезаписать значение с помощью «12345», «foobar» или чего-то другого, отличного от реалистического значения. Я полагаю, вы хотите дату, начиная с 2000-01-01

function ChangeOkButton(field) {
   var okbtt = document.getElementById('save');
   if ((/^(YYYY\-MM\-DD|2\d{3}\-(0[1-9]|1[0-2])\-(0[1-9]|[12]\{d}|3[01]))$/).test(field.value)) {
      okbtt.removeAttribute('disabled');
   }
   else {
      okbtt.disabled = 'disabled';
   }
}  

и ваш ввод

<input type="text" name="fromDate" id="fromDate" value="YYYY-MM-DD" onkeyup="ChangeOkButton(this);"/>

Обратите внимание, что я не учитывал високосные годы или дни в месяце, это всего лишь более надежный контроль над типом данных, введенным пользователем. Измените регулярное выражение, как вам нравится

Примечание: попробуйте поместить переменную 'okbtt' вне функции для повышения производительности, в противном случае вам необходимо получать ссылку каждый раз, когда вы вызываете эту функцию. ужасно.

...