2017-03-21 17 views
1

私は、ドロップダウンの再構築と検証が必要な動的フォームを構築しています。私は "セットアップメニュー"オプションを使用してドロップダウンを再構築することができますが、フォームの検証を再初期化すると、値が選択されても空であるというエラーがスローされます。セマンティックUIフォームの検証と動的ドロップダウン

は、私はすべてのヘルプははるかに高く評価され、ここでhttps://jsfiddle.net/booshwa/mjuL6tvL/2/

JsFiddleを構築しています

function form_init() { 
    $(".ui.form").form({ 
    inline: true, 
    on: 'submit', 
    fields: { 
     dropdown: { 
      identifier : 'dropdown', 
      rules: [ 
      { 
       type : 'empty', 
       prompt : 'Please enter a value' 
      } 
      ] 
     } 
    } 
    }); 

    $(".ui.form").find(".ui.dropdown").dropdown(); 
} 

arr = [ 
    {id: 1, name: "Bob"}, 
    {id: 2, name: "Barb"} 
]; 
options = []; 

for (var i = 0; i < arr.length; i++) { 
    options.push({ 
    value: arr[i].id, 
    text: arr[i].name, 
    name: arr[i].name 
    }) 
} 

$("#select").dropdown('setup menu', {values: options}); 

form_init(); 

HTML

<form class="ui form"> 
    <div class="required field"> 
    <label for="gender">Dynamic Dropdown</label> 
    <select name="dropdown" class="ui dropdown" id="select"> 
     <option value="">Gender</option> 
     <option value="male">Male</option> 
     <option value="female">Female</option> 
    </select> 
    </div> 
    <div class="ui divider"></div> 
    <div class="ui submit button">Submit</div> 
</form> 

JavaScriptは、わからないこれはバグまたはIである場合何かが見当たりません。

答えて

0

select要素の内容を編集して、新しいデータと一致させる必要があります。 $("#select").dropdown('setup menu', {values: options});は、SemanticがUI目的で追加する「擬似」データを置き換えます。

forループの前に$('#select').empty();を追加し、$('#select').append($('<option>', {value:arr[i].id, text:arr[i].name}));を実行すると、問題が分類されます。

以下の例では、空の値フィールドも追加していますので、動作することがわかります。

https://jsfiddle.net/mjuL6tvL/4/

関連する問題