如何用JQuery实现Flask表单下拉框联动填充输入字段
解决方案
没问题,我帮你搞定这个需求!咱们只需要给页面加一小段jQuery脚本,同时给相关元素加个标识方便选择就行,具体实现如下:
需要做的改动:
- 给下拉选择框添加
id="cat-select",方便jQuery定位元素 - 给size输入框添加
id="size-input",方便后续操作 - 添加jQuery事件监听逻辑,实现「选择猫咪时,仅当输入框为空时填充size值」的功能
修改后的完整index.html代码:
<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Cat Selector</title> </head> <body> <form class="" action="/" method="post"> <!-- 给select添加id,方便jQuery选择 --> <select id="cat-select"> {% for cat in cats %} <!-- 给size属性加上引号,符合HTML规范写法 --> <option size="{{ cat['size'] }}">{{ cat['name'] }}</option> {% endfor %} </select> <!-- 给输入框添加id,方便操作 --> <input type="text" name="size" id="size-input" value=""> <input type="submit" value="Submit"> </form> <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> <script> $(document).ready(function() { // 监听下拉框的选项切换事件 $('#cat-select').on('change', function() { // 获取当前选中猫咪的size属性值 const selectedCatSize = $(this).find('option:selected').attr('size'); // 获取size输入框元素 const sizeInput = $('#size-input'); // 仅当输入框为空(或只有空格)时,填充选中的size值 if (!sizeInput.val().trim()) { sizeInput.val(selectedCatSize); } }); }); </script> </body> </html>
代码逻辑说明:
$(document).ready()确保页面所有元素加载完成后再执行脚本,避免出现找不到元素的问题- 监听下拉框的
change事件,每次切换选中的猫咪时触发逻辑 - 通过
$(this).find('option:selected').attr('size')精准获取当前选中猫咪的size属性值 - 用
trim()处理输入框的空白内容,确保只有真正为空时才自动填充;如果输入框已有用户手动输入的内容,就保留原内容不改动 - 顺便给option的size属性加上了引号,这是HTML的规范写法,能避免潜在的解析异常
这样就能完美实现你的需求:选择猫咪时自动填充空的size输入框,同时输入框始终保持可编辑状态,用户随时可以手动修改内容~
内容的提问来源于stack exchange,提问作者James Maguire
相关产品推荐
相关产品推荐

