Я являюсь новым JQuery. Я использую закрытую платформу, которая позволяет мне добавлять код, но не изменять часть поведения. Для добавления функциональности я должен сцепить в определенный запрос Ajax и любое перенаправление ее к своему URL (таким образом, я могу изменить данные там и быть прокси), или измените параметры запроса в стороне клиента.
Действительно ли это возможно с JQuery? И если так, как?
Исходное событие запущено после того, как поле ввода текста обновляется.
Обновление:
После дальнейшего контроля кажется, что текстовым полем управляют с помощью плагина Автоматического заполнения JQuery. Я пытаюсь перевести слова, возвращенные из этого запроса ajax. В основном пользователь вводит текст на одном языке, и я хочу перевести это в английский язык (сам перевод не является проблемой), таким образом, автоматическое заполнение будет использовать английские слова, и затем я хочу перевести из английского языка на язык оригинала, быть отображенным в текстовом поле и толпящемся отделении.
Я использовал плагин автозаполнения jQuery, чтобы сделать нечто подобное, хотя и не в сценарии, в котором я имею дело с «закрытой структурой».
Вы сможете легко выполнить то, что хотите, используя метод .setOptions () для объекта автозаполнения после его инициализации. Итак, ваш код будет выглядеть примерно так (непроверенный! Псевдокод!):
$(autoCompletedField).setOptions({
formatItem: function(resultsRow, resultPosition, totalResults, inputWord) {
// translate your menu items to be displayed in the drop down menu here
// perhaps extend jQuery to handle $.translate(inputWord) ?
return "<li>"+translatedWord+"</li>";
}
}).result(function(event,selectedItem){
// optionally do something more when the user selects one of those items here
// translate the selectedItem back to another language? i dont know.
return translatedItem;
});
проверьте параметры: http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions
Я не думаю, что есть простое решение того, что вы пытаетесь сделать, так как объект XMLHTTPRequest довольно закрыт по соображениям безопасности.
Если Вам повезет, то часть, которая выполняет AJAX-запрос, разбивается на функцию, которую Вы можете перезаписать или переопределить с помощью объекта-прототипа.
Если нет, то, вероятно, лучше перехватить событие изменения в текстовом поле.
В jQuery:
$('#textboxid').unbind();
$('#textboxid').change(function () {
$.ajax({
url: 'http://yourwebservice',
data: {}, //the data to send to your webservice
success: function (data) {
//do your magic
};
})
});
Используйте плагин jquery для перевода Google. Я очень успешно использовал его для перевода текста в прошлом: http://code.google.com/p/jquery-translate/
Вы могли бы посмотреть, как реализовать свой код в "beforeSend" запроса AJAX?
Рассматривали ли вы паттерн наблюдателя в javascript? Я создал пример в своем блоге. Это может помочь вам.
http://www.versomas.com/dannyg/post/Observer-pattern-in-Javascript.aspx