如何在发送 AJAX 请求之前捕获#select1 和#select2 值?
How to catch #select1 and #select2 values before sent the AJAX request?
我有以下 HTML 代码:
<select id="select1">
<option value="0">Option 0</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
<select id="select2">
<option value="0">Option 0</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
<select id="select3">
<option value="0">Option 0</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
<input type="text" id="select4">
我正在将它们变成 Select2 元素,我正在将 INPUT 更改为 SELECT,然后是 Select2,如下所示:
$(function() {
$('#select1').select2();
$('#select2').select2();
var field_value = $('#select2 :selected').val();
var module = $('#select1 :selected').val();
$('#select3').select2().on('select2:select', function(ev) {
var condition_type = $(this).val();
var select_el = '<select id="select4" style="width: 75%" multiple="multiple"></select>';
$('#select4').replaceWith(select_el);
$('#select4').select2({
placeholder: 'Start typing ...',
tags: true,
ajax: {
delay: 200,
url: '/someUrl',
minimumInputLength: 2,
data: function(params) {
var query = {
keyword: params.term,
condition: condition_type,
field: field_value,
table_name: module
}
return query;
},
processResults: function (data) {
return {
results: data
};
}
}
});
});
});
目前没有任何问题。一旦我发送 AJAX 调用,#select1, #select2
的值就会作为 REQUEST 参数发送,这没关系,但是如果我更改 #select1, #select2
的值并尝试相同的 AJAX请求发送以前的值而不是新值。
我尝试了以下方法但没有用:
$('select#conditions').select2().on('select2:select', function (ev) {
var condition_type = $(this).val();
...
}).on('select2:selecting', function (ev) {
field_value = $('#select2 :selected').val();
module = $('#select1 :selected').val();
});
所以我的问题是如何捕捉新值?有什么帮助吗?我试图设置一个 Fiddle 示例 here 但我无法让它与 AJAX 调用一起工作。
只需简单地移动
var field_value = $('#select2 :selected').val();
var module = $('#select1 :selected').val();
里面
data: function(params) {
像这样:
data: function(params) {
var field_value = $('#select2 :selected').val();
var module = $('#select1 :selected').val();
var query = {
keyword: params.term,
condition: condition_type,
field: field_value,
table_name: module
}
return query;
},
在这种情况下,您将始终检索并发送新参数
我有以下 HTML 代码:
<select id="select1">
<option value="0">Option 0</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
<select id="select2">
<option value="0">Option 0</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
<select id="select3">
<option value="0">Option 0</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
<input type="text" id="select4">
我正在将它们变成 Select2 元素,我正在将 INPUT 更改为 SELECT,然后是 Select2,如下所示:
$(function() {
$('#select1').select2();
$('#select2').select2();
var field_value = $('#select2 :selected').val();
var module = $('#select1 :selected').val();
$('#select3').select2().on('select2:select', function(ev) {
var condition_type = $(this).val();
var select_el = '<select id="select4" style="width: 75%" multiple="multiple"></select>';
$('#select4').replaceWith(select_el);
$('#select4').select2({
placeholder: 'Start typing ...',
tags: true,
ajax: {
delay: 200,
url: '/someUrl',
minimumInputLength: 2,
data: function(params) {
var query = {
keyword: params.term,
condition: condition_type,
field: field_value,
table_name: module
}
return query;
},
processResults: function (data) {
return {
results: data
};
}
}
});
});
});
目前没有任何问题。一旦我发送 AJAX 调用,#select1, #select2
的值就会作为 REQUEST 参数发送,这没关系,但是如果我更改 #select1, #select2
的值并尝试相同的 AJAX请求发送以前的值而不是新值。
我尝试了以下方法但没有用:
$('select#conditions').select2().on('select2:select', function (ev) {
var condition_type = $(this).val();
...
}).on('select2:selecting', function (ev) {
field_value = $('#select2 :selected').val();
module = $('#select1 :selected').val();
});
所以我的问题是如何捕捉新值?有什么帮助吗?我试图设置一个 Fiddle 示例 here 但我无法让它与 AJAX 调用一起工作。
只需简单地移动
var field_value = $('#select2 :selected').val();
var module = $('#select1 :selected').val();
里面
data: function(params) {
像这样:
data: function(params) {
var field_value = $('#select2 :selected').val();
var module = $('#select1 :selected').val();
var query = {
keyword: params.term,
condition: condition_type,
field: field_value,
table_name: module
}
return query;
},
在这种情况下,您将始终检索并发送新参数