2015-04-06 1 views
1

Я разрабатываю приложение, которое фиксирует ежедневное использование ресурсов человеком в команде.Oracle Apex Динамические действия в табличной форме

я закончил все, и застрял в точке, т.е.

Пожалуйста, найдите ниже ссылку на изображение (я не могу загрузить изображение здесь, как я новый пользователь)

http://s17.postimg.org/qgh6559rj/image.jpg

As как показано на рисунке выше, я создал табличную форму для этого, где месяц является выпадающим списком, а год - текстовым полем, дни 1,2,3,....31 - это текстовые поля для захвата использованного времени.

Мое требование состоит в том, чтобы сделать дни серыми и заблокированными (чтобы не позволять пользователю вводить данные) в те дни, которые не были в этом месяце.

ex: when Month : Feb then 29,30,31 : greyed out and locked 

Я искал на многих сайтах для решения, но я не смог его получить.

+0

К сожалению , Я не понял ваших объяснений. Вы можете сделать скриншот? – Dmitry

+0

Почему отключить? Почему бы не показать в первую очередь? Это будет либо вызвано (неподдерживаемым) источником SQL вашей табличной формы, либо может быть вызвано условием для последних нескольких столбцов. – Scott

+0

Задумывались ли вы об использовании календаря вместо того, чтобы пытаться справиться с такой проверкой самостоятельно? – Drumbeg

ответ

0

Привет Адитья,
Я попытался решить эту проблему problem.I создали аналогичную табличную форму, имеющую colmns как день1, день2 ... Day29, Day30, Day31.Here я сосредоточился только на day29, Day30, Day31, как только потому, что эти столбцы повлияют на изменение года. Вместо динамического действия я назвал функцию JavaScript hideShow() при изменении года enter image description here

Ниже приведен код для hideShow, где f04, f05, f06 - день29, день30, день31. В этой функции я также добавил возможность високосного года

function hideShow(pThis) 
{ 

    var month=$(pThis).closest('tr').find('[name="f02"]').val(); 
    var year=$(pThis).val(); 

    if (Boolean(parseInt(year) % 4 == 0)&&Boolean(parseInt(year) % 100 != 0)||Boolean(parseInt(year) % 400 == 0)) { 
     if (month.trim()=='FEB') { 
     $(pThis).closest('tr').find('[name="f05"]').attr("disabled","disabled"); 
     $(pThis).closest('tr').find('[name="f06"]').attr("disabled","disabled"); 
     } 

    } 
    else { 
     if (month.trim()=='FEB') { 
     $(pThis).closest('tr').find('[name="f04"]').attr("disabled","disabled"); 
     $(pThis).closest('tr').find('[name="f05"]').attr("disabled","disabled"); 
     $(pThis).closest('tr').find('[name="f06"]').attr("disabled","disabled"); 
     } 
    } 

     if(month.trim()=='APR') { 
     $(pThis).closest('tr').find('[name="f06"]').attr("disabled","disabled"); 
     } 
     else if(month.trim()=='JUN') { 
      $(pThis).closest('tr').find('[name="f06"]').attr("disabled","disabled"); 
     } 
     else if(month.trim()=='SEP') { 
      $(pThis).closest('tr').find('[name="f06"]').attr("disabled","disabled"); 
     } 
     else if(month.trim()=='JAN'||month.trim()=='MAR'||month.trim()=='MAY'||month.trim()=='JUL'||month.trim()=='AUG') { 
     $(pThis).closest('tr').find('[name="f04"]').attr("disabled",false); 
     $(pThis).closest('tr').find('[name="f05"]').attr("disabled",false); 
     $(pThis).closest('tr').find('[name="f06"]').attr("disabled",false); 

     } 
} 

Здесь я работал только с отключить/включить, так же можно также применить CSS во время выполнения, Хоуп этот код поможет ...