как отключить щелчок по календарю после первого щелчка? [отредактировано для решения]

я использую календарь DHTML в своем приложении. при нажатии на дату происходит действие отправки формы.

я хочу отключить календарь после первого щелчка, чтобы пользователь не мог щелкнуть другую дату до отправки формы.

мой код

<SCRIPT type="text/javascript">

function dateChanged(calendar) 
{
    // Beware that this function is called even if the end-user only
    // changed the month/year. In order to determine if a date was
    // clicked you can use the dateClicked property of the calendar:
    if (calendar.dateClicked) {
    // OK, a date was clicked, redirect to /yyyy/mm/dd/index.php
    var y = calendar.date.getFullYear();
    var m = calendar.date.getMonth() + 1; // integer, 0..11
    var d = calendar.date.getDate(); // integer, 1..31
    var NewDate = y + "-" + m + "-" + d;
    document.getElementById("<?=$mydata[FILTER]?>").value = NewDate;
    submitForm();
}




    var tempDate = new Date(<?=$CalDate?>);
    Calendar.setup({
            flat        : "<?=$mydata[FILTER]?>_show_date",     // ID of the parent element
            flatCallback:dateChanged,                                           // our callback function
            weekNumbers:false,                                              // Don't display week numbers
            date        : tempDate      
                    // Set calendar to start at selected date
        });

    document.getElementById("<?=$mydata[FILTER]?>").value = '<?=$mydata[FILTER]?>';

i made a solution for this i disabled div and all the children of div using the code

**var nodes = document.getElementById("13-1_show_date").getElementsByTagName('*');
for(var i = 0; i < nodes.length; i++)
{                                               
nodes[i].disabled = true;
}     
submitForm();**

этот код отключит div и его дочерние элементы после первого щелчка.


person saurabh sharma    schedule 09.12.2011    source источник


Ответы (1)


Эта проблема является классической проблемой, и есть много способов:

  1. Используйте временную переменную с именем isClciked и установите для нее значение true в первый клик, а в последующие клики проверьте ее, и если она истинна, то просто return;.
  2. При первом выполнении вашего обработчика кликов отключите весь календарь (это само по себе имеет много способов)
person Saeed Neamati    schedule 09.12.2011
comment
Мы можем сделать это . но проблема в том, что пользователю должно быть видно, что календарь отключен и его нельзя больше щелкнуть, пока форма не будет отправлена. - person saurabh sharma; 09.12.2011
comment
Затем просто сделайте это с помощью CSS. - person Saeed Neamati; 09.12.2011
comment
Вы можете быть более ясным, пожалуйста. используя css, как мы можем блокировать клики, я не хочу скрывать календарь. - person saurabh sharma; 09.12.2011
comment
Вы можете добавить к HTML-элементу атрибут, например disabled='disabled' (имитирующий поведение браузера), и написать правило CSS, чтобы использовать opacity: 0.6; для элементов, имеющих этот атрибут. - person Saeed Neamati; 09.12.2011