2013-02-26 2 views
1

У меня есть динамически сгенерированная форма, которую я получаю от асинхронного вызова AJAX, и у меня есть некоторые настройки, предоставляемые в объекте JSON. Я хочу, чтобы предназначаться одно поле специально с JQuery, так что я загрузить данные в формате JSON в переменную JS для работы с ним:Ориентация элемента с jQuery в зависимости от данных JSON

var jsonData = {{response.write(session.j_jsondata, escape=False)}}; 
/* 
I'm using Web2Py, so the part between the double curly braces is equal to: 
{'fields': [{'required': 'true', 'type': 'mtext', 'name': 'desc'}]} 
*/ 

Данные получает правильно загружены в переменную, а затем, когда я хочу предназначаться что-то с имя от jsonData.fields [somenumber] .name он не работает .. Я пробовал так:

jQuery("form [name="+jsonData['fields'][i]['name']+"]") 

я не получаю сообщение об ошибке. Любые идеи, почему он не нацелен на ожидаемый элемент? Благодаря!

Редактировать: Я попытался немного изменить структуру. Вместо того чтобы использовать имя, которое я выбрал ID (я обновил вид шаблона, а OFC) и переключился на

jQuery("#"+jsonData['fields'][i]['name']) 

, но до сих пор нет сигар. Вероятно, у него есть некоторые проблемы с тем фактом, что поле генерируется после вызова AJAX, но это более странно, потому что сценарий вызывается после создания формы. Итак, последнее, что происходит, это выполнение этого скрипта, который нацелен на элемент формы, но он не работает. Волшебство.

+0

Имеет ли значение 'i' правильное значение? Поскольку вы не знаете (я полагаю), правильно ли генерируется селектор, установите точку останова и ожидайте переменные. Чтобы узнать, как это сделать (если вы этого не сделаете), ознакомьтесь с http://www.netmagazine.com/tutorials/javascript-debugging-beginners. –

+0

@FelixKling да, мы можем сказать, что i = 0, это не проблема - все работает, когда я использую определенный идентификатор элемента - проблема в jQuery ("form [name =" + jsonData ['fields'] [ i] ['name'] + "]"), но я не знаю, где :( – Dropout

+1

Как я уже сказал, отладка! Мы не можем запускать код, поэтому мы не можем сделать это для вас. Вызовите 'console.log (" form [name = "+ jsonData ['fields'] [i] ['name'] +"] ")' непосредственно перед выбором и посмотреть, что такое результат. Правильно ли селектор? И выполняете ли вы этот вызов, когда форма существует (поскольку она загружается через Ajax)? –

ответ

2

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

jQuery("form[name="+jsonData['fields'][i]['name']+"]") 

Cheers,

Теренция.

+0

Зависит от того, что вы ищете. это селектор потомков. Селектор OP ищет элемент с определенным именем внутри каждой формы (что имеет смысл, поскольку элементы управления формой имеют имена), в то время как ваш ищет элемент формы с этим именем. Семантика отличается. –

+0

Возможно, вместо этого с указанием «form [name]», тогда вам следует рассмотреть вопрос о «form input [name]» - я уверен, что вы не можете указать имя в качестве селектора, если вы понимаете, что я имею в виду.(Или форма выберите [имя] в зависимости от того, какие типы данных у вас есть) –

+0

Но у меня есть форма, содержащая элемент с именем .. Это не имя формы. – Dropout

2

Возможно, это связано с отсутствием предложений для селектора атрибутов. Попробуйте это:

$('form [name="'+jsonData['fields'][i]['name']+'"]') 
+0

Предполагая, что все остальное верно, это наиболее вероятная причина. –

+0

... но если имя si ngle word, он также должен работать без кавычек. – shere

+0

nope, еще ничего :(спасибо в любом случае – Dropout

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