【问题标题】:I am not able to apply color picker js(jscolor.js) on input field我无法在输入字段上应用颜色选择器 js(jscolor.js)
【发布时间】:2017-04-27 06:34:42
【问题描述】:

下面是我的代码html代码

   <head>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
     <script src="jscolor-2.0.4/jscolor.js"></script>
      <body>

        <script>
      $(document).ready(function() {
      var max_fields      = 10; 
       var wrapper         = $(".input_fields_wrap");
          var add_button      = $(".add_field_button"); 

       var x = 1; 
         $(add_button).click(function(e){ 
         e.preventDefault();
          if(x < max_fields){ 
        x++; 
        $(wrapper).append('<div>Case :<input type="text" name="mytext"> Color Picker :  <input class="jscolor" name="c_picker"><br><a href="#" class="remove_field">Remove</a></div>');
    }
});

$(wrapper).on("click",".remove_field", function(e){ 
    e.preventDefault(); $(this).parent('div').remove(); x--;
})
  });
  </script>


        <form>
    DB-URl  :
    <input type="text" name="firstname"><br/>
      Username:
    <input type="text" name="lastname"><br/>
    Password:
   <input type="password" name="Password"><br>
    Table Name:
    <input type="text" name="t_name"><br>
    Color column:
   <input type="text" name="c_column"><br>
  <div class="input_fields_wrap">
    <button class="add_field_button">Add More Fields</button>
    <div>Case :<input type="text" name="mytext">  Color Picker :  <input  class="jscolor" name="c_picker"><br></div>
      </div>
   <input type="submit" value="Update" id="updating">  
 </form> 

第一次颜色选择器 js 适用于输入字段,但是当我动态添加更多颜色选择器字段时,颜色选择器 js 不适用于下一个输入字段。谁能解释一下为什么会这样?

【问题讨论】:

  • First Time color picker js is apply on input field 显示此代码

标签: javascript jquery html


【解决方案1】:

这是因为日期选择器是在加载文档时创建的。

如果您在加载文档后插入新的 HTML 元素,则需要为每个新元素分配一个唯一的 ID,并使用以下代码手动附加颜色选择器:

$("#idOfNewElement").colorpicker();

【讨论】:

    【解决方案2】:

    在这个 stackoverflow 问题上解决了这个问题:
    using jscolor.js on dynamic input

    解决方案是添加:

    $(document).ready(function() {
      jscolor.installByClassName("jscolor");
    });
    

    【讨论】:

      【解决方案3】:

      使用jscolor()bind 新附加的元素:

          $(document).ready(function () {
                      var max_fields = 10;
                      var wrapper = $(".input_fields_wrap");
                      var add_button = $(".add_field_button");
      
                      var x = 1;
                      $(add_button).click(function (e) {
                          e.preventDefault();
                          if (x < max_fields) {
                              x++;
                              $(wrapper).append('<div>Case :<input type="text" name="mytext">Color Picker : <input class="jscolor" name="c_picker"><br><a href="#" class="remove_field">Remove</a></div>');
                              var color = new jscolor($(wrapper).find('input.jscolor:last')[0]);
                              //$(wrapper).find('input.jscolor:last').each(function () {
                                  //var color = new jscolor($(this)[0]);
      
                          //});
      
      
                          }
                      });
      
                      $(wrapper).on("click", ".remove_field", function (e) {
                          e.preventDefault();
                          $(this).parent('div').remove(); x--;
                      });
                  });
      

      【讨论】:

      • 无需遍历所有输入(这不是一种有效的方式),每次您尝试初始化已经初始化的输入...
      • @ZakariaAcharki 现在警告已删除 :) 谢谢。
      【解决方案4】:

      您可以使用以下方法在添加的输入上初始化 jsColor:

      new jscolor($('.jscolor').last()[0]);
      

      注意:无需遍历所有输入。

      $(document).ready(function() {
        $('.add_field_button').click(function(e){
          e.preventDefault();
      
          $('form').append('<div>Case :<input type="text" name="mytext">        Color Picker :  <input class="jscolor" name="c_picker"><br><a href="#" class="remove_field">Remove</a></div>');
      
          new jscolor($('.jscolor').last()[0]);
        });
      });
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jscolor/2.0.4/jscolor.min.js"></script>
      <form>
        <div class="input_fields_wrap">
          <button class="add_field_button">Add More Fields</button>
          <br><br>
          <div>Case :<input type="text" name="mytext">  Color Picker :  <input  class="jscolor" name="c_picker"><br></div>
        </div>  
      </form>

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-09
      • 2021-06-26
      • 1970-01-01
      • 2015-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      相关资源
      最近更新 更多