簡體   English   中英

使用jQuery.inArray檢查下拉值是否在數組內

[英]Check dropdown value if within array using jQuery.inArray

頁面處理一個輸入字段,該字段根據下拉值更改行為。

<div class="form-group">
          <label for="exampleInputEmail2">Element Name</label>
          <select class="form-control" name="element_id" id="element_name">
            @foreach($elements as $element)
              <option value="{{ $element->element_id }}">{{ $element->element_name }}</option>
            @endforeach
          </select>
</div>
<div class="form-group">
          <label for="exampleInputName2">Element Value</label>
          <input type="text" class="form-control" id="element_value" name="value" placeholder="Add an Element Value">
</div>

我的腳本如下:

 <script type="text/javascript">
    <?php
    echo "var javascript_array = ". $list . ";\n";
    ?>
    $("#element_name").on('change', function(){
      var id_input = $('#element_name').val();
      if(id_input == 2){
            $("#element_value").datepicker();
        }
      else if(jQuery.inArray(id_input, javascript_array)!='-1'){
            $("#element_value").datepicker('destroy');
                $( function() {
                      $("#element_value").autocomplete({
                        scroll: true,
                        autoFocus: true,
                        minLength: 3,
                        source: function( request, response ) {
                          $.ajax({
                            url: "/employees/public/admin_list/search",
                            dataType: "json",
                            data: {
                                searchText: request.term


              },
                        success: function( data ) {
                         response($.map(data, function(item) {
                              return {
                                  label: item.name,
                                  value: item.id
                              };
                          }));
                        }
                      });
                    },
                    select: function( event, ui) {
                      $(this).val(ui.item.label);
                      return false;
                    }
              } );
              } );
    }
  else {
      $('#element_value').datepicker('destroy');
    }
});
</script>

因此,基本上,如果下拉列表的值為2(生日),則該字段將更改為datepicker(有效),不幸的是, else if(jQuery.inArray(id_input, javascript_array)!='-1')的部分似乎沒有用,因為它不會將輸入更改為搜索輸入。 (如果我將其硬編碼為else if((id_input == 1) || (id_input == 4) || (id_input == 5))它將始終有效,但是隨着用戶將來創建它們,此列表ID將會增加,因此我必須將它們存儲在javascript_array然后從那里進行搜索)。

我想念什么?

數組顯示為var javascript_array = [1,4,5];

由控制器生成,如下所示:

$lists = Elements::select('element_id')->where('is_list', 1)->get();
          foreach ($lists as $r){
            $list_temp[] = $r->element_id;
          }
$list = json_encode($list_temp);

一個根據下拉值更改行為的輸入字段。

如果我正確理解,則可以通過單行jQuery函數實現此目的:

 $(document).ready(function(){ $('select').change(function(){ $('input').attr('type', $('option:selected').val()); }) }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select> <option value="text">Text Input</option> <option value="button">Button Input</option> <option value="date">Date Input</option> <option value="checkbox">Checkbox Input</option> <option value="radio">Radio Input</option> </select> <input type="text" /> 

問題是jQuery.inArray必須傳遞正確的type

$('#element_name').val()會將id_input設置為字符串:-

 var id_input = "4"; var javascript_array = [1,4,5] var stringType = jQuery.inArray(id_input, javascript_array); console.log(stringType); // -1 var intType = jQuery.inArray(parseInt(id_input), javascript_array); console.log(intType); // 1 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

因此您需要parseInt下拉值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM