2013-06-20 4 views
0

Я немного озадачен этой проблемой, с которой я столкнулся.странное поведение jquery при установке атрибута значения

У меня есть элемент <input type="text" /> в шаблоне, который я клонирую при создании объектов объекта.

function buildSectionTest(item) { 
if (item == null) 
    return; 
var sectionItem = $('.templates-mc .templates-mc-section-item').clone(); 

$('.mc-label', sectionItem).text(item.TestDescription); 
$('.mc-input', sectionItem).attr({ 'testid': item.ID, 'syntax': item.TestSyntax, 'value': item.Value }); 
//$('.mc-input', sectionItem).val("TEST"); 
//alert($('.mc-input').attr('value'); 
//alert($('.mc-input').val()); 

return sectionItem.html(); 
} 

Однако свойство value не задано. Глядя на оказанной HTML показывает:

<input class="mc-input rounded-corners" type="text" testid="6446" syntax="[input]"> 

Я попробовал несколько вещей (закомментированные в коде выше), но все возвращается пустая строка или нет значения.

Первоначально я думал, что я могу очистить все поля ввода (по какой-то странной причине), но это не так.

мой пункт.Сообщение не является нулевым или неопределенным.

Неужели кто-то еще столкнулся с этой проблемой?

Цените все входные данные!

+0

Попробуйте войти содержимое item.Value вы конечно, это не [ввод] – Orangepill

+0

Также расскажите, как используется 'buildSectionTest'? –

ответ

3

не использовать .attr() установить потребительная стоимость .val()

$('.mc-input', sectionItem).attr({ 'testid': item.ID, 'syntax': item.TestSyntax}).val(item.Value); 

Ex:

function buildSectionTest(item) { 
    if (item == null) 
     return; 

    var sectionItem = $('.templates-mc .templates-mc-section-item').clone(); 

    $('.mc-label', sectionItem).text(item.TestDescription); 
    $('.mc-input', sectionItem).attr({ 'testid': item.ID, 'syntax': item.TestSyntax}).val(item.Value); 
    //$('.mc-input', sectionItem).val("TEST"); 
    //alert($('.mc-input').attr('value'); 
    //alert($('.mc-input').val()); 

    return sectionItem; //do not return the html 
} 
+0

Я тоже использовал .val, поэтому мне кажется странным, что он не работает. Если вы видите, что я прокомментировал пару вещей в своем коде, где я непосредственно тестировал .val («test»); но он не устанавливает его вообще. – Sash

+0

Также не возвращайте 'sectionItem.html();' вам нужно возвратить 'sectionItem;' –

+0

Спасибо, Арун, удалив .html(), похоже, сработало. Я предполагаю, что sectionItem сохраняет объект jquery. – Sash

-2

Попробуйте это:

$('.mc-input', sectionItem).attr({ 'testid': item.ID, 'syntax': item.TestSyntax, this.val(item.Value) }); 
+0

NO way ......... – mplungjan

+0

что может быть проблемой? –

+1

Это даже не действительный синтаксис Javascript. Все внутри объектного литерала должно быть в форме 'property: value'. – Barmar

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