9

ddslickを使用して、アイコン付きのドロップダウンメニューを作成しています。唯一の問題は、フォームを投稿するときに、選択したオプションの値が常に空であるということです。ddslickをオフにすると正常に機能します。

<script language="javascript" type="text/javascript">
$('.cflagdd').ddslick({
 onSelected: function(selectedData){
    //callback function: do something with selectedData;
   // $('#editcflag').submit(); - this does not work, posts form on page load
}   
});
</script>

<select class="cflagdd" name="cflag">
<option value="0" selected="selected">No action flag set</option>
<option value="1" data-imagesrc="'.base_url().'images/Actions-flag-green-icon.png">Resolved</option>
<option value="2" data-imagesrc="'.base_url().'images/Actions-flag-yellow-icon.png">Investigate</option>
<option value="3" data-imagesrc="'.base_url().'images/Actions-flag-red-icon.png">Urgent</option>
<option value="4" data-imagesrc="'.base_url().'images/Actions-flag-blue-icon.png">False positive</option>
</select>

バージョン:Jquery-1.7.2.js jQuery UI-v1.8.20

助けてくれてありがとう、ずっと前に

4

12 に答える 12

14

名前属性なしで非表示の入力を残す ddslick のバグがあります。

ddslick にいくつかの行を追加して、select の name 属性をそれが作成する隠し要素に追加することができました。

最初に、ddslick の圧縮されていないバージョンをダウンロードします: http://dl.dropboxusercontent.com/u/40036711/Scripts/jquery.ddslick.js

次に、106 行目、または "var ddSelect = ..." で始まる行の直後に次を追加します。

// set hidden input name
ddSelect.find('input.dd-selected-value').attr('name', $(this).attr('name'));
于 2014-04-29T18:04:47.637 に答える
5

おそらくこれよりも優れた解決策ですが、これに遭遇したときに私がしたことは、選択した値を非表示の入力要素に配置したことです。

<script language="javascript" type="text/javascript"> 
    $('.cflagdd').ddslick({  
        onSelected: function(selectedData){  
            if(data.selectedIndex > 0) {
                $('#hidCflag').val(data.selectedData.value);

                $('#editcflag').submit();
            }   
        }    
    }); 
</script>  

<input type="hidden" name="hidCflag" id="hidCflag" value="" />

<select class="cflagdd" name="cflag"> 
    <option value="0" selected="selected">No action flag set</option> 
    <option value="1" data-imagesrc="'.base_url().'images/Actions-flag-green-icon.png">Resolved</option> 
    <option value="2" data-imagesrc="'.base_url().'images/Actions-flag-yellow-icon.png">Investigate</option> 
    <option value="3" data-imagesrc="'.base_url().'images/Actions-flag-red-icon.png">Urgent</option> 
    <option value="4" data-imagesrc="'.base_url().'images/Actions-flag-blue-icon.png">False positive</option> 
</select> 
于 2012-07-24T19:28:35.947 に答える
3
Solution
<select id="status" name="status" class="ddslick" >
        <option  value="1">Admin Only</option>
        <option  value="2">Editing</option>
        <option value="3">Review</option>
        <option  value="4">Live</option>
</select>

<script>
$("select.ddslick").each(function(){
        var name =  $(this).attr('name');
        var id = $(this).attr('id');
        $("#"+id).ddslick({
            showSelectedHTML: false,
            onSelected: function(selectedData){
                $("#"+id+ " .dd-selected-value").prop ('name', name);
             }  
        });
    });
</script>
于 2015-05-07T18:39:17.737 に答える
3

Snipe656 の概念的なアイデアは機能しますが、スクリプトに誤りがあります。正しいスクリプト部分は次のとおりです。

<script language="javascript" type="text/javascript"> 
    $('.cflagdd').ddslick({  
        onSelected: function(data){  
            if(data.selectedIndex > 0) {
                $('#hidCflag').val(data.selectedData.value);

                $('#editcflag').submit();
            }   
        }    
    }); 
</script>

(...)

于 2013-01-04T01:01:46.217 に答える
2

jquery.ddslick.min.jsでこのテキストを見つけ て、これに名前を追加します

<input class="dd-selected-value" type="hidden" />

これにより、正しいデータがサーバーに送信されます

<input class="dd-selected-value" name="cflag" type="hidden" />
于 2016-03-08T10:23:44.133 に答える
2

選択したオプションの値を格納する非表示の入力に名前を動的に追加することで、なんとか修正しました。

HTML では:

<select id='locationList'> 
  <option value="a">a</option>
  ...
</select>

Javascript では:

  1. それを「ddslick」:

    $('#locationList').ddslick();
    
  2. name 属性を hidden に動的に追加する

    $('#locationList').find('input[type=hidden]:first').attr("name", "location");
    
于 2016-02-05T15:23:49.730 に答える
1

これに対する修正は次のとおりです。

https://github.com/ahmeij/ddslick/commit/6a085996428dd6f1a06a6fd2195c8f4f13d8ab28

UNMINIFIED ソース コードでこの行を見つけます (行 103 付近)

 obj.addClass('dd-container').append(ddSelectHtml).append(ddOptionsHtml);

これを下に追加します。

// Inherit name attribute from original element
obj.find("input.dd-selected-value").attr("name", $(original).attr("name"))

これで問題は解決しました!

于 2014-12-11T09:50:42.883 に答える
0

ddslick プラグインはすべての選択タグを変更し、新しい隠しフィールドを作成<input>します。コードを調べると、未定義の入力が見つかる可能性があります。

<input name="undefined" id="undefined" class="dd-selected-value" type="hidden" value="1">

プラグインページで明確にする必要があるのは、プラグインが適切に機能するために select-tag を囲む div と名前と ID を必要とすることです。だから使用:

<div id="cflagdd_container">
    <select class="cflagdd" name="cflag" id="cflag">
          <option value="0">No action</option>
          <option value="1" selected data-imagesrc="...">Resolved</option>
          ...
     </select>
</div>

これで、有効な入力が得られました。

<input name="cflag" id="cflag" class="dd-selected-value" type="hidden" value="1">

jquery でコンテナーを参照します。

$('.cflagdd_container').ddslick();
于 2012-10-22T16:51:39.220 に答える
0

@ジョンJ

私はあなたと同じ問題を抱えていました。ここにあるこれらのヒント/ヒントはすべて役に立ちませんでした。

ddslick の問題はそのバグです。選択したアイテムと一緒に送信された名前はありませんが、これは

する必要があります。

この後継者を試してください:

http://ddslickremablized.remabledesigns.com/

あなたのバグはこのバージョンで修正されています。選択したアイテムがサーバーに正しく送信されます。

于 2013-01-18T07:17:06.250 に答える
0

You have to put the selectedData of ddslick in a field like input.hidden. Then, ddslick renders an input element into HTML. No way a html-element sends data when you do a simple form-submit. ;)

于 2012-12-04T16:35:22.583 に答える