使用窄范围使用JavaScript提交表单以避免冲突

时间:2015-01-06 15:01:24

标签: javascript forms

我正在使用下面的javascript来提交一个id为PrimaryCatForm的表单,因为它形成了更清晰的代码冲突。

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled 2</title>

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>


<script type="text/javascript" >
$(document).ready(function() {
$('#PrimaryCatForm').on('change', function(){
     this.submit()
});
    });
//onChange="document.getElementById(\'PrimaryCatForm\').submit();"
</script>

<head>

表格似乎没有提交。

HTML表单

<form id="PrimaryCatForm" name="PrimaryCatForm" action="" method="post">

4 个答案:

答案 0 :(得分:2)

submit()是一个JS / jQuery方法,不是一个独立的函数(除非你定义它),所以你需要调用它&#34; on&#34;事:

$(document).ready(function() {
  $('#PrimaryCatForm').on('change', function(){
    $(this).submit();
  });
});

在此处查看:

&#13;
&#13;
    $(document).ready(function() {
      $('#PrimaryCatForm').on('change', function() {
        $(this).submit();
      });
    });
 
    // ignore this part, 
    // this is just to prevent submitting in the snippet here
    $('#PrimaryCatForm').on('submit', function() {
      alert('calling form submit!');
      return false; // prevent actual submitting
    })
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<form id="PrimaryCatForm" action="">
  <input type="text" name="name" />
</form>
&#13;
&#13;
&#13;


注意:如果您希望在每次更改时提交表单(例如,每个键入/删除的字符),您应该考虑onchange以外的侦听器(当字段失去焦点时触发),如{{ 1}}将触发每个按下的键。

答案 1 :(得分:1)

表单元素没有“on change”事件,只有其输入字段:

var form = $("#PrimaryCatForm");

form.filter(':input').on("change", function() {
    form.submit();
});

答案 2 :(得分:1)

this.submit()确实有用。

    $(function(){ 
        $("#form1").change(function() {
           console.log('A value in form has been changed');
            this.submit();
        });
    }) 
<form id="form1">
    <input type="text" name="test"/>
</form>

答案 3 :(得分:0)

为了完整性而发布答案只是为了解释您可以实际绑定到表单上的onchange事件,因为事件冒泡。

但是,您的代码有点令人困惑,因为表单元素没有onchnage个事件,但即使它仍然有效,因为onchange事件冒泡到表单从内在形式元素。在这种情况下,您需要做的就是使用this表单引用并调用它的提交方法:

$('#PrimaryCatForm').on('change', function() {
     $(this).submit(); // or this.submit();
});

演示:http://jsfiddle.net/dqo04o12/