我有一个下拉月,它根据所选输入的年份动态填充。
当用户点击Month Dropdown时,会显示月份列表。 如何使用JQuery获取用户选择的月份值?假设下拉列表是动态填充的。
当用户点击显示的月份列表
时,将调用此函数$("#month").click(function() {
var value = $(this).children("div p").val(); // return undefined
console.log("month: " + value);
});
HTLM下拉
<div id="month">
<span class="input">März</span>
<div class="dropdown">
<p></p>
</div>
</div>
当用户点击下拉月份时,UpdateMonths()
函数会被调用并动态填充列表
$("#month span").click(function(event) {
$("#month div").html(UpdateMonths());
event.stopPropagation();
if (!$(this).hasClass('disabled')) { // only open downdown when not disabled
Dropdown($(this).parent().attr("id"));
} else Dropdown(); // hide all dropdown menues
});
function Dropdown (element) {
$("#month div").hide(); // hide all dropdowns
if (element) $("#"+element+" div").toggle(); // show dropdown of specified element
}
这是我填写列表的方式
function UpdateMonths(){
var temp = "";
if (parseInt(Get.Year()) <= 2012){
for (var i = 0; i < Get.Months.length; i++) {
var monthsChain = "<p>"+Get.Months[i]+"</p>";
temp += monthsChain;
};
}else{
temp = "<p>Januar</p><p>Februar</p><p>März<p></p><p>April</p><p>Mai</p><p>Juni</p><p>Juli</p>";
}
return temp;
}
答案 0 :(得分:2)
你可以尝试
var value = $(this).find("div p").text();
或更具体:
var value = $(this).find("div.dropdown p").text();
答案 1 :(得分:1)
.val()
用于获取表单字段的值。如果您想要通用HTML元素的文本内容(例如<span>
或<p>
,则需要使用.text()
:
$("#month").click(function() {
var value = $(this).find('.input').text();
console.log("month: " + value);
});
确保从下拉列表的HTML类中删除句点(。) - 类必须以字母开头,而不是数字或标点符号。
答案 2 :(得分:1)
看起来您所选的值位于<span>
而不是<p>
,因此它应该是:
var value = $(this).children("span.input").text();
编辑:你可以这样做:
$(document).on('click', '#month', function(e) {
if($(e.target).is('p')) {
var value = $(e.target).text();
console.log(value);
}
});
答案 3 :(得分:1)
我假设您希望从p
元素列表中选择月份。
HTML(与问题类似的结构)
<div id="month">
<span class="input"></span>
<div class="dropdown">
<p>January</p><p>February</p>
</div>
</div>
<div id="year">
<span class="input"></span>
<div class="dropdown">
<p>2013</p><p>2014</p>
</div>
</div>
jQuery,需要委托事件,因为<p>
元素是动态生成的。
$("#month, #year").on('click', '.dropdown p', function() {
var value = $(this).text();
console.log("month: " + value);
});
如何将月值设置为span(在上面的范围内)
$(this).parent().siblings('span').text(value);
和jsfiddle一起玩
答案 4 :(得分:0)
您可以将val()用于输入字段。使用text()来获取文本字段。通常
并有文字。
尝试这样:
var value = $(this).children("div p").text();
或
var value = $(this).children("div p").html();
使用html(),您可以获得属于span或p标签的任何类型的值。