Сначала вызывается функция javascript, а затем динамически создается событие CheckChanged для Checkbox. - PullRequest
2 голосов
/ 28 августа 2009

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

Если я вызываю функцию javascript, то она возвращает true / false (событие onclick), но не входит внутрь CheckboxCheckChanged.

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

Ответы [ 4 ]

2 голосов
/ 28 августа 2009
CheckBox1.Attributes["onclick"] = "Check();";

function Check ( elem )
        {
            if ( window.confirm ( "are you sure you want to do this?" ) )
            {
                __doPostBack ( '' , '' );
            }
            else
            {
                return false;
            }
        }
1 голос
/ 07 сентября 2010

JavaScript Подтвердите на флажке, смотрите ниже, это очень просто и работает:

<asp:CheckBox ID = "cbx_CoBorrNotPresent" runat="server" Text="Not Present" 
 AutoPostBack="false" TextAlign="Left" Checked="true"  onclick="javascript:ChkClick();" />



<script id="igClientScript" type="text/javascript">

        function ChkClick() 
        {
            var checkBox1 = document.getElementById('ctl00_cph_PageContent_cbx_CoBorrNotPresent');


            if (confirm('Are you sure?')) 
            {
                __doPostBack('ctl00$cph_PageContent$cbx_CoBorrNotPresent', '');

            }
            else 
            {
                return false;  
            }

        };
     </script>
0 голосов
/ 07 февраля 2013
<asp:CheckBox ID="chkbox" runat="server" AutoPostBack="false"
              onclick="javascript: SomeFunction();" />

Это поможет. Я много боролся с этим и нашел решение. Убедитесь, что текст «onclick» состоит из маленьких букв.

0 голосов
/ 28 августа 2009

Я обнаружил эту проблему пару раз, когда использовал ASP: CheckBoxes со свойством AutoPostBack, установленным в true.

Если это свойство имеет значение true, ASP .NET создает некрасивое встроенное событие onclick для сгенерированного HTML, как это:

<input id="CheckBox1" type="checkbox" name="CheckBox1" 
 onclick="javascript:setTimeout('__doPostBack(\'CheckBox1\',\'\')', 0)" />

Таким образом, если вы снова установите событие onclick, оно будет переопределено и PostBack не произойдет.

Я нашел обходной путь к этому, в основном, чтобы сохранить исходное событие onclick, которое генерирует ASP .NET, и назначить новую функцию onclick, которая будет отображать подтверждение, и если пользователь выберет Cancel, он вернет false, в противном случае Исходное событие щелчка будет выполнено нормально с правильным контекстом и объектом события, и произойдет обратная передача, например:

window.onload = function() {
  var checkBox1 = document.getElementById('<%=CheckBox1.ClientID %>'),
      originalOnClick = checkBox1.onclick; // store original click event

  checkBox1.onclick = function(e) {
    if (confirm('Are you sure?')) {
      originalOnClick.call(this, e); // call the original click with the right
                                     // context and event object
    } else {
      return false;  // cancel the click
    }
  };
};
...