SOLVED: Update Angular model after setting input value with jQuery
Here's code with <input>
element. It runs with AngularJS.
I need to imitate keypress for it.
If I use $().val() or autotype library, which imitates keypress events, AngularJS script don't handle it. I can't press "Create group" button.
But If I type manually, button works.
<div class="md_simple_modal_body">
<form class="modal_simple_form ng-pristine ng-valid" ng-submit="updateGroup()">
<h4 my-i18n="group_create_modal_title">Create group</h4>
<div class="md-input-group md-input-animated" my-labeled-input="">
<label class="md-input-label" my-i18n="group_create_name">Group name</label>
<input class="md-input ng-pristine ng-valid ng-empty ng-touched" type="text" ng-model="group.name" my-focused="">
</div>
</form>
</div>
<div class="md_simple_modal_footer">
<button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel">Cancel</button>
<button class="btn btn-md btn-md-primary" ng-class="{disabled: group.creating}" ng-click="createGroup()" ng-bind="group.creating ? 'group_create_submit_active' : 'group_create_submit' | i18n" ng-disabled="group.creating">Create group</button>
</div>
</div>
Function in controller:
$scope.createGroup = function () {
if (!$scope.group.name) {
return
}
$scope.group.creating = true
var inputUsers = []
angular.forEach($scope.userIDs, function (userID) {
inputUsers.push(AppUsersManager.getUserInput(userID))
})
return MtpApiManager.invokeApi('messages.createChat', {
title: $scope.group.name,
users: inputUsers
}).then(function (updates) {
ApiUpdatesManager.processUpdateMessage(updates)
if (updates.updates && updates.updates.length) {
for (var i = 0, len = updates.updates.length, update; i < len; i++) {
update = updates.updates[i]
if (update._ == 'updateNewMessage') {
$rootScope.$broadcast('history_focus', {peerString: AppChatsManager.getChatString(update.message.to_id.chat_id)
})
break
}
}
$modalInstance.close()
}
})['finally'](function () {
delete $scope.group.creating
})
}
I tried:
$("form[ng-submit='updateGroup()']").find("input[ng-model='group.name']").val("12223");
And
$("form[ng-submit='updateGroup()']").find("input[ng-model='group.name']").autotype("12223"); // With library. Link poster earlier.