如何使用jQuery检测HTML表单更改,详细说明了noob?

时间:2016-12-06 04:03:43

标签: jquery html

我是一个关于HTML的菜鸟。我通过thisthisthisthis等进行了筛选。这是我想出的代码,但是,我做过的更多实验,都行不通。我可以整天打击输入字段,但我从未看到警报。大多数答案都假设你知道我认为我不知道的事情。谁能告诉我可能出错的地方?

<script   
src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">
</script>
<script>
    $("#myform :input").change(function() {
        alert("Form changed");
    });
</script>

<form id="myform" name="myform" method="GET">
   <!-- a bunch of text fields, etc -->
</form>

2 个答案:

答案 0 :(得分:2)

<form id="myform" name="myform" method="GET">
    <input type="text" name="field">
    <input type="text" name="field2">
    <input type="text" name="field3">
</form>

<script>
    $("#myform input").change(function() {
        alert("Form changed");
    });
</script>

试试这个。确保您的脚本位于表单下方,或者在脚本运行时不会加载表单。或者你可以将你的javascript包装在$(document).ready()中。这将在加载DOM后执行您的代码。 https://api.jquery.com/ready/

$(document).ready(function() {
    // Your Javascript
}

此外,如果您要查找每个按键上的警报,请查看keyup()keydown(),而不是在jQuery中使用change()https://api.jquery.com/keyup/ < / p>

答案 1 :(得分:0)

这非常清楚地解释了这一点。 Generic way to detect if html form is edited

您可以向表单添加数据属性:data-changed="false"

<script   
src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">
</script>
<script>
    $("#myform :input").change(function() {
       //here we make sure that the on change event for every form input element
       //triggers the flag on the form (data-changed) to true.
       $("#myform").data("changed",true);
    });

    //when the form is being submitted:
    $(document).on('submit',"#myform",function(){
        if ($("#myform").data("changed")) {
        {
           //something has changed: do something
        }
    })
</script>

<form id="myform" name="myform" method="GET" data-changed="false">
   <!-- a bunch of text fields, etc -->
</form>