当我使用静态下拉列表时,我可以获得价值,但是一旦我更改为动态生成的列表值,它总是空白的。
有人有什么想法吗?甚至可以从动态元素中获取值吗?
JS:
$('#input_baseUrl').ready(function(){
var newSelect=document.createElement('select');
var selectHTML="";
for(var count=0; count<services.length; count=count+1){
var tempString = services[count].split("/");
var serviceName = tempString[3];
selectHTML+= "<option value='"+services[count]+"'>"+serviceName+"</option>";
}
//iniatilize a new select with the data we provided
newSelect.innerHTML= selectHTML;
//find the DOM element that is called input_baseURL
document.getElementById("input_baseUrl").appendChild(newSelect);
});
function setURL() {
var url = document.getElementById("input_baseUrl").value;
alert($('#input_baseUrl').val()); // not sure if jQuery will work here but I have to try
window.alert("THE URL is: " + url);
var element = document.getElementById("input_baseUrl");
var strUser = element.options[element.selectedIndex].value;
window.alert("Third option is: " +strUser);
}
HTML:
<form id='api_selector'>
<div class='input' id="input_baseUrl" onchange="setURL()" name="baseUrl" type="text"></div>
<div class='input'><input placeholder="api_key" id="input_apiKey" name="apiKey" type="text"/></div>
<div class='input'><a id="explore" href="#">Explore</a></div>
</form>
答案 0 :(得分:0)
是的,这是可能的。但你必须使用更精细的选择器:
$('#input_baseUrl select option:selected').val();
但我认为您的HTML在以下行中存在问题,您是说这是两个标记,input
内有div
吗?
<div class='input' id="input_baseUrl" onchange="setURL()" name="baseUrl" type="text"></div>
要解决此问题,请将其分为两个标记,然后将div
id
<form id='api_selector'>
<div class='input' id="div_baseUrl">
<input id="input_baseUrl" onchange="setURL()" name="baseUrl" type="text"/>
</div>
...
</form>
:
newSelect
然后,您可以从div
功能中将ready()
添加到document.getElementById("div_baseUrl").appendChild(newSelect);
:
setUrl()
在此之后,您的function setURL() {
var url = $('#input_baseUrl').val();
var strUser = $('#div_baseUrl select option:selected').val();
}
功能可以是:
/