0

フォーム内のすべてのラベルの選択リストを作成しています。次に、選択リストを使用して各フォーム フィールドを選択します。フォームは Amazon のメイン検索ボックスに似ていますが、さまざまなフィールド タイプがあります。

問題は、ラベルが正しく分割されていないため、オプションの値が正しく表示されないことです。

誰かがフィードバックを提供できる場合は、私がしばらくこれに取り組んでいるので、非常に役に立ちます。

他にご不明な点がございましたら、お問い合わせください。

$.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
$(".views-exposed-widget label").each(function(){
        $("#selopt").append("<option value="+$(this).text()+">"+$(this).text()+"</option>");
    });

更新されたフィドルを参照してください

于 2013-07-30T02:08:04.437 に答える
1

$.makeArrayhtml要素のみを取得すると思います..ループを削除してこれ.text()に変更します$.each

$.each(arr,function(){
    sel += '<option value="'+$(this).text()+'">'+$(this).text()+'</option>';
});
于 2013-07-30T01:28:27.307 に答える