Я пытаюсь написать код JavaScript, чтобы ввести кучу оценок в онлайн-книгу. Класс Книга представляет собой таблицу с входами:JavaScript: Введите значение и отправьте текстовый ввод
<input type="text" maxlength="12"
class="grade-entry input--flush" tabindex="1"
data-bind="visible:!$parent.assignment.useLetterGradingScheme,
value:gradeString, disable:showDetail ||
!$parent.permissions.AssignGrades || (isGradeApproved &&
!$parent.permissions.ChangeApprovedGrades), event:
{change:$parent.onChangeGrade,focus:$parent.onFocus},
attr:{'aria-label':'Grade for ' + sortableName},
css:{'animate-saving':saving, 'success':isGradeApproved}"
aria-label="Grade for [last name], [first name] [middle initial]">
Я написал код, который находит правильный вход поставить студентов имя в путем доступа к ария-метки атрибут и сравнения и фамилии. Код успешно проходит и вводит оценки:
input.value = 10.5;
Однако класс не отправляет. При вводе оценок вручную я должен сначала ввести оценку, а затем нажать «Ввод». После нажатия «Ввод» цвет окна ввода изменяется, и класс сохраняет, так что, если я обновляю уровень, остается.
Мой код этого не делает. После запуска кода поля ввода содержат оценки, но когда я обновляю их, все уходят. Поэтому на данный момент мне нужно пройти один за другим и нажать на вход, а затем нажать «Ввод».
У меня есть массив со всеми входами. Затем я нахожу правильный индекс для ученика. Я пытался имитировать клавишу ввода нажмите на:
var e = jQuery.Event("keypress");
e.which = 13; //choose the one you want
e.keyCode = 13;
$(inputs[i]).trigger(e);
где входы является массив всех элементов ввода и я является показателем правильного ввода для студента.
Есть ли способ сделать то, что я пытаюсь сделать?
EDIT Я забыл упомянуть; вход не встроен в форму или что-то еще. Это просто автономно внутри строки таблицы.
EDIT Похоже, что это форма AJAX. Я не очень хорошо знаком с AJAX, но я добавил небольшую часть функции под названием $.fn.ajaxSubmit
ниже, которую я нашел (только небольшой раздел, потому что вся функция очень длинная). Каков параметр options
? И если у меня есть правильный параметр options
, могу ли я просто вызвать эту функцию, чтобы отправить его?
/**
* ajaxSubmit() provides a mechanism for immediately submitting
* an HTML form using AJAX.
*/
$.fn.ajaxSubmit = function(options) {
/*jshint scripturl:true */
// fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
if (!this.length) {
log('ajaxSubmit: skipping submit process - no element selected');
return this;
}
var method, action, url, $form = this;
if (typeof options == 'function') {
options = { success: options };
}
method = this.attr('method');
action = this.attr('action');
url = (typeof action === 'string') ? $.trim(action) : '';
url = url || window.location.href || '';
if (url) {
// clean url (don't include hash vaue)
url = (url.match(/^([^#]+)/)||[])[1];
}
options = $.extend(true, {
url: url,
success: $.ajaxSettings.success,
type: method || 'GET',
iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
}, options);
// hook for manipulating the form data before it is extracted;
// convenient for use with rich editors like tinyMCE or FCKEditor
var veto = {};
this.trigger('form-pre-serialize', [this, options, veto]);
if (veto.veto) {
log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
return this;
}
....
....
Напомним, что с моим текущим кодом, я считаю, фактический <Input>
объект для каждого студента и обновления значения. Так можно ли вызвать указанную выше функцию с указанным <Input>
и отправить любое значение, которое я только что положил в <Input>
?
EDIT Я пытался читать AJAX. Если у меня есть указанный <Input>
объект (я буду называть его input1
, я могу только сказать, что-то вроде:
$(input1).ajaxSubmit();
Вы уверены, что '' input' в input.value = 10.5, 'действительно входной элемент, а не массив из входов или некоторых другой тип объекта? Кроме того, вам не нужно эмулировать ввод для этого ввода после изменения его значения. – IulianP
Да. Все цифры введены правильно. Проблема в том, что они не отправляются. Но, похоже, для ввода не существует значения отправки. Единственный способ, которым я знаю, как подать оценки, - нажать Enter. – Joe
@ Joe jsfiddle с вашим примером будет очень полезно, потому что я не могу получить, как вы можете отправить что-то без формы только с помощью html. Пожалуйста, добавьте все, что связано с вашим кодом здесь. – havenchyk