【发布时间】:2014-05-22 19:33:52
【问题描述】:
可能更像是一个初学者类型的问题,但是。如果我在页面上使用以下代码,它可以正常工作,并显示我需要的内容(来自 jquery 的 Listview)
<ul data-role="listview" data-split-theme="a" data-inset="true">
<li><a href="#">
<img src="alarmcritical.png" width=25px;>
<h2>Broken Bells</h2>
<p>Broken Bells</p></a>
</li>
<br>
<li>
<a href="#">
<img src="alarmminor.png" width=25px;>
<h2>Warning</h2>
<p>Hot Chip</p>
</a>
</li>
<br>
<li>
<a href="#">
<img src="alarmmajor.png" width=25px;>
<h2>Wolfgang Amadeus Phoenix</h2>
<p>Phoenix</p>
</a>
</li>
</ul>
但是,我正在使用
更新页面的一个部分document.getElementById('insertHere').innerHTML = stringData;
stringData 是上面 html 的一长行...我已将其复制粘贴为一行以确保它确实有效(在 innerhtml 之外)。
所以我有一个插入的跨度,并希望能产生与我自己键入 html 相同的效果。但每次它出来时都坏了(没有格式化为 listview )。这是一个常见问题,还是我忽略了什么?
谢谢
编辑:使用 Javascript 更新 - 温和一点,对它比较陌生,并使用大量示例源代码
$(document).ready(function () {
$('#tags').on('autocompleteselect', function (e, ui) {
//check array for company name that was entered
for(var i = 0; i < cases.length;i++){
if(ui.item.value == cases[i].companyName)
index = cases[i].id;
}
var company = "";
//set the company name to match the one the customer selected
company = cases[index].companyName;
//display on page the cases for the customer selected
var stringData = '<ul data-role="listview" data-split-theme="a" data-inset="true"><li><a href="#"> <img src="alarmcritical.png" width=25px;> <h2>Broken Bells</h2> <p>Broken Bells</p></a></li><br><li><a href="#"> <img src="alarmminor.png" width=25px;> <h2>Warning</h2> <p>Hot Chip</p></a></li><br><li><a href="#"> <img src="alarmmajor.png" width=25px;> <h2>Wolfgang Amadeus Phoenix</h2> <p>Phoenix</p></a></li>';
document.getElementById('insertHere').innerHTML = stringData;
//hide keyboard after user is done selecting
//source code found at http://stackoverflow.com/questions/8335834/how-can-i-hide-the-android-keyboard-using-javascript
hideKeyboard($('input'));
function hideKeyboard(element) {
element.attr('readonly', 'readonly'); // Force keyboard to hide on input field.
element.attr('disabled', 'true'); // Force keyboard to hide on textarea field.
setTimeout(function() {
element.blur(); //actually close the keyboard
// Remove readonly attribute after keyboard is hidden.
element.removeAttr('readonly');
element.removeAttr('disabled');
}, 100);
}
$(function() {
$( "#selectable" ).selectable({
stop: function() {
var result = $( "#select-result" ).empty();
$( ".ui-selected", this ).each(function() {
var index = $( "#selectable li" ).index( this );
result.append( " #" + ( index + 1 ) );
//set a brief timeout between the actual click of the case and when it displays
setTimeout(func, 500);
//display the case details
function func() {
document.getElementById('insertHere').innerHTML = '<div class="shadow"><table id=\"selectable\" border:0.5px BORDERCOLOR=black><tr><td height=10%><h2>' + company + '</h2></td></tr><table id=\"selectable\" border:0.5px BORDERCOLOR=black><tr><td><img src=ic_priority.png>Priority Status</td> <td><img src=ic_escalation.png>Escalation</td></tr></table><br><table id=\"selectable\" border:0.5px BORDERCOLOR=black><tr><td><img src=\"ic_agent.png\" valign=bottom> <button data-theme="a"><img src=ic_action_call.png></button><button><img src=\"ic_action_chat.png\"></button</td></tr><tr><td>Case: ' + customerCases[index].caseNumber + ' </td></tr><tr><td>Status: Open</td></tr><tr><td>Updated: 8 May 2014 15:09:46</td></tr><tr><td>Contact: Bob Kingston</td></tr><td>Agent: ' + customerCases[index].contactName + '</td><tr><td>State: Offline</td></tr><tr><td><br></td></tr><tr><td>Issue:</td></tr><tr><td> ' + customerCases[index].problem + '</td></tr></table></div>';
}
});
}
});
});
});
});
$("input[name=companyName]").autocomplete({ 来源:案例 }).data("自动完成")._renderItem = function(ul, item) { 返回 $("
//$('div').addClass('shadow');
</script>
以上所有内容都在脑海中。 我正在做的是让自动完成功能从本地数组中调出一些信息。因此,当您第一次搜索时,它会显示一些内容,然后在您选择一个内容后,它会显示一个包含所选信息的页面。全部进入“插入”。但是当我将 innerHTML 与我编写的 stringData 一起使用时,我似乎无法让它正常工作。
【问题讨论】:
-
我认为这不会影响您的情况,但您的上述标记无效。
<ul>元素的唯一合法子元素是<li>元素。<br>标签在当前写入时无效...