2014-09-18 4 views
2

Я играю в консоли Chrome Dev Tools, и я заметил, что когда я физически щелкаю флажок с помощью мыши, а когда я звоню $('input.checkbox').prop('checked',true), конечный результат эстетичен, но не в конце.Почему пользователь проверяет флажок, отличный от программного?

Например, допустим, что существует форма, представляющая пол пользователя. Если я поставлю флажок рядом с «Мужской» и нажмите «Отправить», система запишет это изменение, но если мне нужно позвонить $('input.checkbox#male').prop('checked',true) и нажать «отправить», он не будет записывать изменения в конце.

Выполняет ли это программно не изменять состояние или есть что-то на их конце, которое специально было сделано, чтобы запретить изменение состояния программным путем?

+0

Возможно ли, что в коде есть прослушиватель событий «click»? Выполнение этого программно не должно иметь значения. (с точки зрения данных, которые представлены). –

+0

Попробуйте добавить '$ ('input.checkbox'). Trigger ('change')' и посмотреть, если это имеет значение. – nbrooks

ответ

2

Вероятно, есть кто-то щелкнуть или изменить прослушиватель, который сделает что-то необходимое перед отправкой результатов. Попробуйте использовать $('input.checkbox#male').click() вместо $('input.checkbox#male').prop('checked',true)

+0

Calling click() работал как шарм! Благодаря! –

4

Это, скорее всего, потому, что прослушиватели событий onClick, onChange и друзья активируются только по действиям пользователя, а не при программном изменении какого-либо состояния.

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