【发布时间】:2026-02-18 01:50:01
【问题描述】:
可以为表单创建一个事件监听器,这样如果没有执行操作(例如从列表中选择任何元素),表单将不会提交,并最终显示警报?
谢谢!
【问题讨论】:
-
你的意思是说如果用户不改变下拉菜单的默认值,那么就会触发
alert? -
如果表单没有变化,为什么在点击提交按钮后不发出警报?
标签: jquery events forms submit listener
可以为表单创建一个事件监听器,这样如果没有执行操作(例如从列表中选择任何元素),表单将不会提交,并最终显示警报?
谢谢!
【问题讨论】:
alert?
标签: jquery events forms submit listener
确实有可能。最直接的方法是处理所有元素的change 事件,在那里引发一些全局标志,然后在submit 事件中检查该标志:
$("#Form1 input,textarea,select").each(function() {
$(this).change(function() {
window["canSubmit"] = true;
});
});
$("#Form1").submit(function() {
if (window["canSubmit"] === true)
return true;
alert("Please fill the form");
return false;
});
现场测试用例:http://jsfiddle.net/Wahr2/
【讨论】:
$("#Form1 input,textarea,select").each(function() { 更改为:$("input,textarea,select").each(function() { 这意味着您将捕捉到任何元素的变化,无论它位于何处。
window["canSubmit"] = true即可。
您可以通过单击提交按钮来连接此操作(从列表中选择任何元素)并检查是否选择了任何列表元素,否则会触发警报
$(document).ready(function()
{
$('#Submit').click(function(){
if (!$("#mySelect option:selected").length)
alert("Select a value");
});
});
【讨论】:
这应该可行。 http://jsfiddle.net/eLgEZ/
<form id="form">
<input type="checkbox" onclick="$('#form').data('valuesChanged',true)"/>
<input type="submit" value="submit" onclick="if($('#form').data('valuesChanged') == undefined){alert('iiik')}else{alert('ok lets submit')};return false"/>
</form>
但是,您需要为所有表单元素添加一个侦听器,该侦听器在更改时将设置表单数据“valuesChanged”
编辑
请记住删除提交按钮的onclick语句末尾的“return false”。
【讨论】: