2017-02-03 3 views
0

Я пытаюсь изменить содержимое поля формы и отправить форму с консоли. Всякий раз, когда я использую Jquery или JS для изменения поля и отправки, страница распознает только те значения, которые были введены вручную.Может ли Javascript/AJAX/JQuery определить, была ли введена форма?

Код, приведенный ниже, должен содержать поле «lastField», которое должно быть представлено как «поддельная запись», но вместо этого поле представляется пустым.

$('submit').click(function(event) { 
    event.preventDefault(); 
    $('#lastField').val('spoofed entry'); 
    $('submit').submit(); //I also tried .click(); 
}); 

Есть ли способ воспроизвести ввод ручной клавиши в поле? Я думаю, что что-то обнаруживает метод ввода - я также думаю, что это блокирует эту запись.

+0

Что вы на самом деле хотите сделать? Я не понял тебя. Но да, вы можете определить глобальную переменную и изменить значение переменной на каждом ключе вверх. см. метод keyUp для JQuery и значение обновления. Используйте эту переменную в форме – webDev

+1

Что такое '$ ('submit')'? класс? идентификатор? супермен? –

+0

$ ('submit') ничего, поэтому код не будет запущен, вы отправите базовую пустую форму, просто щелкнув, этот код JS бесполезен – Mike

ответ

0

попытаться использовать идентификаторы вместо сопоставления HTML в странице

$('#submit_button').click(function() { 
    $('#lastField').val('spoofed entry'); 
    $('#form').submit(); 
}); 
+0

просто интересно, почему это сработает? попробует – dpu16

+0

Кажется, вам нужно прочитать документы JQuery для реализации рабочего решения или вставить код для исправления, легко – Mike

0

Прежде всего, вы должны поместить ваш слушатель события на форме, а не кнопку отправки, например:

$('form').on('submit', function(e){ 

    e.preventDefault(); 
    var form = $(this)  

    //... do your thing 

    form.submit(); 

}); 

Кроме того, я заметил некоторые странные асинхронные действия с $(). Val(), поэтому вы можете обернуть $(this).submit() в тайм-аут, чтобы он дал код, чтобы на самом деле сделать все ...

комплектTimeout (функция() { вид.submit(); }, 50);

Так над всеми:

$('form').on('submit', function(e){ 

    e.preventDefault(); 

    var form = $(this)  

    $('#lastField').val('spoofed entry') 

    setTimeout(function(){ 
     form.submit(); 
    }, 50); 

}); 

Попробуй без тайм-аута первой, хотя, потому что это довольно Hacky, но я помню, что-то вроде, что помогает мне в прошлом.

+0

, похоже, не работает. – dpu16

0

После многих поисков и мастеринга я узнал, что форма была формой ngsubmit от углового JS.) .trigger ('вход'); был необходим после установки значения с помощью JS/JQuery.

Добавив, что угловое обнаружено изменение формы.

Смежные вопросы