Как видно из заголовка, я пытаюсь установить значение поля формы .clone()
'd, используя результаты запроса $.getJSON()
. Все возвращаемые значения имеют тот же ключ, что и атрибут имени поля формы, к которому они принадлежат.
Естественно, я пытался использовать .val("foo")
для устранения различий между кросс-браузерными типами / полями, но это не сработало Как ни странно, .attr("value","foo")
делает.
Есть идеи? Это ожидаемое поведение или недокументированная причуда? Вот соответствующий фрагмент кода:
function showSites(){
$.getJSON("process.php?action=showSites", function(data) {
var items = [];
$.each(data.sites, function(key, val) {
var $form = $("#addSiteForm").clone();
var buttons = '<button id="getCert" class="button" href="getCert.php?id=' + val.id + '">Get Cert</button>'
+ '<button id="updateSite" class="button" href="process.php?action=updateSite&id=' + val.id + '">Update Site</button>'
+ '<button id="deleteSite" class="button" href="process.php?action=deleteSite&id=' + val.id + '">Delete Site</button>';
// set siteId
$form.find("input[name=siteId]").attr("value",val.id);
// change values
$.each(val, function(i,v){
$form.find("[name="+i+"]").val(v);
});
items.push('<h3><a href="#">' + val.name + '</a></h3>');
items.push("<div class='site'>");
items.push("<form class='siteForm' id='"+val.id+"'>");
items.push($form.html());
items.push("</form>");
items.push(buttons);
items.push("</div>");
});
var foo = items.join('');
$("#sites").prepend(foo).accordion("destroy").accordion();
});
});