Firefox 4.01 игнорирует все после вызова jQuery «event.preventDefault ()» в элементе формы - PullRequest
0 голосов
/ 05 мая 2011

У меня есть веб-страница, которая динамически генерирует HTML-форму с помощью JavaScript и помещает ее в div с идентификатором jobJSONConfigurationForm.

Чтобы получить элемент Submit формы (id jobJSONConfigurationFormSubmit), я вызываю функцию live submit-div:

jobJSONConfigurationFormSubmit.live('click', function() {
    event.preventDefault();
    var jobSummaryJSONTextareaValue = $("#jobSummaryJSONTextarea").val();
    var jobSummaryJSONObj = null;
    try {
        jobSummaryJSONObj = JSON.parse(jobSummaryJSONTextareaValue);
    } catch(e) {
        alert('This is not a valid JSON string. Please try again with a JSON-formatted string.');
    }
    updateJobSummaryWithJSONObj(jobSummaryJSONObj);
});

Функция updateJobSummaryWithJSONObj() обновляет модель данных страницы и представление (другие формы и динамически генерируемый HTML).

Этот код обновляет модель и представление в Chrome 11 и 10, но это не работает в Firefox. Модель данных и представление не обновляются в Firefox 4.01.

Если я добавлю alert('foo') перед строкой event.preventDefault();, Firefox покажет мне диалоговое окно с предупреждением, но не запустит код в оставшейся части функции.

Если я добавлю alert('foo') после строки event.preventDefault();, Firefox не отобразит предупреждение и не запустит код в оставшейся части функции.

Что я делаю не так с jQuery под Firefox, что приводит к сбою event.preventDefault()? Спасибо за ваш совет.

Ответы [ 3 ]

5 голосов
/ 05 мая 2011

event не определяется автоматически для привязанного обработчика.Это первый аргумент.Я думаю, что вы имели в виду:

jobJSONConfigurationFormSubmit.live('click', function(event) {
  event.preventDefault();
  ...

Примечание: Я бы также предложил использовать имя, отличное от event.

1 голос
/ 05 мая 2011

Попробуйте:

jobJSONConfigurationFormSubmit.live("click", function(evt) {
    evt.preventDefault();
}
1 голос
/ 05 мая 2011

Судя по вашему коду, event не определено.Попробуйте jobJSONConfigurationFormSubmit.live('click', function(event) { в первой строке.Надеюсь, это поможет!

...