Обновление проблемы attr ("onclick") - PullRequest
2 голосов
/ 27 июля 2010

У меня есть следующий код для работы с элементами управления ASP.Net.

Я пытаюсь добавить некоторый код javascript к событию «onclick» на кнопке, когда переменная результата (res) равна «NO». Проблема в том, что в первый раз, когда он присваивает значение «onclick», он работает нормально, но когда выполняется removeAttr и снова вызывается функция, а res равняется «NO», снова не добавляет код на « onclick "событие. Так что в этом плохого? Спасибо за вашу помощь. =)

Легенда: - HLevel (текстовое поле) - PSave (LinkButton)

 $('#HLevel').blur(function () {
      // SOME CODE HERE BEFORE THE ISSUE CODE
      var res = $(msg).find("string").text();
      if (res == "NO") {
         $('#PSave').attr("onclick", "javascript:return confirm('some text');");
      } else {
        $('#PSave').removeAttr("onclick");
      }

  });

Ответы [ 3 ]

1 голос
/ 27 июля 2010

почему бы не использовать jquery для всего этого вместо обработчиков javascript onclick. те грязные

$('#PSave').click(function(){
    confirm('some text');

});

и вместо removeAttr используйте unbind.

$('#PSave').unbind();
1 голос
/ 27 июля 2010

Используйте методы unbind() и click():

if (res == "NO") {
    $('#PSave').click(function() {return confirm('some text');});
} else {
    $('#PSave').unbind("click");
}

Если вы используете jQuery, постарайтесь максимально использовать его и не смешивайте стили.

1 голос
/ 27 июля 2010

Вам нужно изменить обработчик события click следующим образом:

$('#HLevel').blur(function () {
     // SOME CODE HERE BEFORE THE ISSUE CODE
     var res = $(msg).find("string").text();
     if (res == "NO") {
        $('#PSave').click(function(){
            return confirm('some text');
        });
     } else {
        $('#PSave').unbind('click');
     }

 });
...