[英]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.