2013-07-30 31 views
0

我正在制作我的表单中所有标签的选择列表。选择列表将被用来选择每个表单域。该表格与亚马逊主搜索框类似,但具有不同的字段类型。jquery makeArray然后拆分

问题是标签没有被正确分割,所以选项值没有正确显示。

如果任何人都可以提供反馈,这将是非常有益的,因为我已经在这一段时间了。

谢谢你,让我知道如果你有任何其他问题。

$.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/

+1

它会更容易知道预期的结果。通过只说*“我有问题分裂阵列”*没有明确指出你的真正问题 –

回答

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); 
+0

谢谢。我要去回答这个问题。我可以在函数外使用文本变量吗?我试图比较文本VAR与用户选择 – arkjoseph

+0

不直接,您可以查询'.each'函数内的用户选择,或者您可以将值推入数组并在循环后检查数组。 – Jay

+0

我现在有一个数组中的值。我只需要将数组与$(“#selopt”)。val()进行比较。几乎得到它,但我想生病发布一个新的问题。 – arkjoseph

1

我觉得$.makeArray只获得HTML元素..删除.text(),改变你的$.each循环 本

$.each(arr,function(){ 
    sel += '<option value="'+$(this).text()+'">'+$(this).text()+'</option>'; 
}); 
1
$(".views-exposed-widget label").each(function(){ 
     $("#selopt").append("<option value="+$(this).text()+">"+$(this).text()+"</option>"); 
    }); 

看到更新fiddle

相关问题