在jQuery中,当我们需要在修改表单值后自动提交表单时,这通常涉及到监听表单元素值的变化事件,然后在回调函数中触发表单提交操作。
.change()
或.on('change')
事件$('#myInput').change(function() {
$('#myForm').submit();
});
或者
$('#myInput').on('change', function() {
$('#myForm').submit();
});
.trigger()
方法$('#myInput').val('new value').trigger('change');
.submit()
$('#myInput').val('new value');
$('#myForm').submit();
原因:可能是DOM未完全加载就绑定了事件,或者元素是动态生成的。
解决方案:
$(document).ready(function() {
$('#myInput').on('change', function() {
$('#myForm').submit();
});
});
// 或者对于动态元素
$(document).on('change', '#myInput', function() {
$('#myForm').submit();
});
原因:事件被多次绑定。
解决方案:使用.off()
先解绑再绑定
$('#myInput').off('change').on('change', function() {
$('#myForm').submit();
});
原因:在异步操作中修改值后需要手动触发事件。
解决方案:
$.ajax({
url: 'someurl',
success: function(response) {
$('#myInput').val(response.value).trigger('change');
}
});
<!DOCTYPE html>
<html>
<head>
<title>表单自动提交示例</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<form id="myForm" action="/submit" method="post">
<input type="text" id="myInput" name="username">
<input type="submit" value="Submit">
</form>
<script>
$(document).ready(function() {
$('#myInput').on('change', function() {
console.log('值已改变,提交表单');
$('#myForm').submit();
});
// 模拟异步修改值
setTimeout(function() {
$('#myInput').val('异步设置的值').trigger('change');
}, 2000);
});
</script>
</body>
</html>
没有搜到相关的文章