как отключить нажатие на календарь после первого клика? [отредактировано для решения] - PullRequest
1 голос
/ 09 декабря 2011

Я использую календарь 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]?>';

я сделал решение для этого я отключил div и все дети div используя код

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

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

1 Ответ

1 голос
/ 09 декабря 2011

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

  1. Используйте временную переменную с именем isClciked и установите ее в значение true при первом щелчке, а при последующих щелчках - проверьте егои, если это правда, то просто return;.
  2. При первом запуске вашего обработчика кликов отключите весь календарь (это само по себе имеет много способов)
...