Сценарии диалога jQuery для ввода val - PullRequest
0 голосов
/ 05 февраля 2010

У меня небольшая проблема с диалоговым окном jQuery и способом обработки сценариев.

В диалоговом окне HTML у меня есть

<input id="test"> 

Если я делаю

<script type="text/javascript>
   $('#test').val("haha")
</script>

после входа, он появляется. Если я поставлю перед , это не сработает. Теперь проблема в том, что я пытаюсь изменить значение $ ('# test'), используя триггер щелчка, и я не могу!

   $('.testbutton').click(function() { 
          alert();      
          $('#test').val("haha");
    });

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

Общий скрипт, как сейчас, не работает:

<input type="button" class="testbutton" />
<input type="text" size="10" id="test" name="test" value="">

 $('#test').val("currentvalue"); // This works
       $('.testbutton').click(function() { 
              alert();      
              $('#test').val("haha");
        });

Обновление Диалог показывает правильное значение в #test после закрытия и повторного открытия. Это может быть что-то, что я скучаю?

Ответы [ 3 ]

2 голосов
/ 05 февраля 2010

Поместите свой код jQuery в $(document).ready(function () {...your code...}). Это сделает его выполненным после того, как браузер создаст дерево DOM для вашей страницы. В противном случае javascript не сможет правильно искать / манипулировать элементами DOM. Это будет выглядеть следующим образом:

$(document).ready(function () {
    $('.testbutton').click(function() { 
          $('#test').val("haha");
    });
});

Обновление:

Если ваш HTML-код загружается динамически, используйте live для привязки обработчика событий:

$(document).ready(function () {
    $('.testbutton').live("click", function() { 
          $('#test').val("haha");
    });
});
0 голосов
/ 05 февраля 2010

Проблема оказалась в тесте #. По какой-то причине замена работает с идентификатором класса вместо идентификатора идентификатора. Я полагаю, это потому, что # заменит только один экземпляр, и по какой-то причине, которую мне еще предстоит выяснить, существует более одного экземпляра диалога (или скрытого).

Спасибо за все ваши предложения!

0 голосов
/ 05 февраля 2010

Полагаю, вам следует заключить код в $ (function () {// code here}); чтобы ваш код запускался только тогда, когда ваш DOM готов.

...