0

我在我的表单中列出了所有标签的选择列表。然后将使用选择列表来选择每个表单域。该表单将类似于亚马逊的主搜索框,但具有各种字段类型。

问题是标签未正确拆分,因此选项值未正确显示。

如果有人可以提供反馈,那将非常有帮助,因为我已经有一段时间了。

谢谢,如果您还有其他问题,请告诉我。

$.fn.menuForm = function(){
var _fo = $("form");
var _hi = $(_fo).find(".views-widget");
var _ho = $(".views-exposed-widget").not(".views-submit-button");
var _lb = $(".views-exposed-widget label").text();

$(_fo).before("<span id='expand'>Search</span>");
$(_fo).find(".views-submit-button").insertAfter("form");
$(_fo).find(".views-reset-button input").appendTo(".views-submit-button");
$("body").append("<select id='selopt'><option></option></select>");

var arr = [];

var arr = $.makeArray(_lb);
var opts = arr.slice('');
var sel = "";
alert(opts);

$.each(opts,function(i){
    sel += '<option value="'+opts[i]+'">'+opts[i]+'</option>';
});
$('#selopt').append(sel);

$("input[type='text']").change(function(){
    $(this).closest(".views-exposed-widget").find("label").addClass("_s").show();
});
};
$(this).menuForm();

这是我的进步:http: //jsfiddle.net/arkjoseph/swDy5/3/

4

3 回答 3

2

而不是查询所有标签,将文本粘贴到一个数组中,然后再次将其拆分出来以填充您的 html,您可以在找到每个元素时对其进行迭代:

$("body").append("<select id='selopt'><option></option></select>");

var sel = "";
$(".views-exposed-widget label").each(function () {
    var text = $(this).text();
    sel += '<option value="'+ text +'">'+ text+'</option>';
});
$('#selopt').append(sel);
于 2013-07-30T01:26:30.330 回答
1

我认为$.makeArray唯一的获取 html 元素.. 删除.text()并将$.each循环更改为此

$.each(arr,function(){
    sel += '<option value="'+$(this).text()+'">'+$(this).text()+'</option>';
});
于 2013-07-30T01:28:27.307 回答
1
$(".views-exposed-widget label").each(function(){
        $("#selopt").append("<option value="+$(this).text()+">"+$(this).text()+"</option>");
    });

查看更新的小提琴

于 2013-07-30T02:08:04.437 回答