使用jQuery我构建了一个动态表单;当第一个选择输入(名为category
)更改第二个选择输入(名为subcategory
)时,将显示子选项。而这现在很完美。
当给出特定的url参数时,我想在页面准备好后自动填写表单。
$(document).ready(function () {
// initialize defaults
var category = getUrlParameter('category');
var subcategory = getUrlParameter('subcategory');
if (category && subcategory) {
$("select#category").val(category).change();
$("select#subcategory").val(subcategory).change();
}
});
getUrlParameter
是我从Sameer Kazi复制的辅助函数。
目前第一个选择输入已填入,第二个选择输入已生成但未填写。实际上,更改命令需要等待,直到第一个更改命令准备就绪。
答案 0 :(得分:2)
setTimeout(function(){
$("select#subcategory").val(subcategory).change();
},300);
也许这个? 等待300毫秒,直到做出其他更改。我想这足以让第一个完成:)
答案 1 :(得分:2)
您可以使用jQuery的.when()
函数,该函数在调用 .then()
之前首先处理异步函数。
$.when($("select#category").val(category).change()).then(function() {
$("select#subcategory").val(subcategory).change();
});
以下是使用这两个功能的小例子。我在select变更事件处理程序中添加了console.log
函数,以便您可以按照所发生的情况进行操作。
$("select#category").on('change', function() {
console.log('[on change] category changed');
$("select#subcategory").show();
});
$("select#subcategory").on('change', function() {
console.log('[on change] subcategory changed');
});
$(document).ready(function () {
// initialize defaults
var category = 1;
var subcategory = 2;
if (category && subcategory) {
$.when($("select#category").val(category).change()).then(function() {
console.log('[then] activating subcategory');
$("select#subcategory").val(subcategory).change();
});
}
});
select#subcategory {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="category">
<option>...</option>
<option value="1">value 1</option>
<option value="2">value 2</option>
</select>
<select id="subcategory">
<option value="1">subvalue 1</option>
<option value="2">subvalue 2</option>
</select>
答案 2 :(得分:0)
$("select#category").on("load",function(){
$("select#subcategory").val(subcategory).change();
});
如果我遇到你的问题,也许这会有用
答案 3 :(得分:0)
也许你可以听取事件$("select#category").on("change",function(){
$("select#subcategory").val(subcategory).change();
});
$("select#category").val(category).change();
也代替$("select#category").val(category).trigger('change');
尝试
ps -aef|grep odoo