2012-10-09 103 views
3

我首先想说的是,我对JavaScript和jQuery非常陌生。 我认为这是一个非常愚蠢而简单的问题,我知道有很多关于这方面的问题,而且我确实尝试了所有这些问题。虽然我似乎无法解决我的问题。CodeIgniter Javascript表单提交

我有一个输入栏和一个提交按钮。点击提交时,我想将输入字段的内容保存到数据库中,并继续保持原样显示页面上的内容。

我的JavaScript代码如下:

<script type="text/javascript"> 
     $(document).ready(function() 
     { 
      $('#submit').submit(function(e) 
      { 

       e.preventDefault(); 
       var msg = $('#uname').val(); 
       $.post("c_test/test_submit", {uname: msg}, function(r) { 
        console.log(r); 
       }); 
      }); 
     }); 
    </script> 

而且我的HTML代码如下(我用笨):

$this->load->helper('form'); 
echo form_open(); 
$data =array ('name'=>'uname','id'=>'uname'); 
echo form_input($data) . '<br />'; 
$data=array('name'=>'submit','id'=>'submit','value'=>'Submit'); 
echo form_submit($data); 
echo form_close(); 

我会很感激,如果有人能指出我的愚蠢。谢谢!

+0

尽管我能够从代码中推断出问题所在,但如果您在问题中解释了您所遇到的问题,这通常很有用。如果你正在获得你没有预料到的功能,请说明这个功能是什么。 –

+0

另外,不是每个人都使用相同的语言来生成HTML,您可以使用它(我个人从来没有使用过codeigniter,尽管有可能将您发布的代码做为应该执行的操作),所以通常包含实际的,在提问与jQuery或常规JavaScript相关的问题时生成的HTML。 –

+0

安东尼我很抱歉。在此之后,我一定会记住这一点。 – idok

回答

3

您正在使用

​​

在这种情况下submitbutton/inputid,它有没有这样类似submit的事件,而不是您可以使用click事件,像

$('#submit').click(function(e){ ... }); 

$('#submit').on('click', function(e){ ... }); 

否则,您可以在下面的行

echo form_open(); 

改变

echo form_open('c_test/test_submit', array('id' => 'myform')); 

和替代

$('#submit').click(function(e){ ... }); 

可以使用

$('#myform').submit(function(e){ 
    e.preventDefault(); 
    var msg = $('#uname').val(); 
    var url=$(this).attr('action'); 
    $.post(url, {uname: msg}, function(r) { 
     console.log(r); 
    }); 
}); 

$('#myform').on('submit', function(e){ 
    e.preventDefault(); 
    var msg = $('#uname').val(); 
    var url=$(this).attr('action'); 
    $.post(url, {uname: msg}, function(r) { 
     console.log(r); 
    }); 
}); 
+0

感谢百万这样的描述性答案..它工作得很好..我相信我有就jQuery而言,需要做大量的阅读工作。 – idok

+0

不客气:-) –

0

也许是这样的:

$data=array('name'=>'submit','id'=>'submit','value'=>'Submit','onsubmit'=>'return false;'); 

这样就停止了发帖的形式,这将反过来从爽口停止页面。但是,它将要求您通过ajax提交表单。

1

看起来好像是“提交”的id的元素是表单的提交按钮 - <input type="submit">。但是,submit事件由表单触发,而不是提交按钮,因此您绑定的事件处理程序不会触发。

上移“提交” id到形式,或改变选择绑定submit事件处理程序:

$('form').submit(function(e) { 
    // handle submit event from the form 
}); 
1

你要做这样的:

<?php 
$this->load->helper('form'); 

echo form_open('', array('id' => 'myform')); 
.. 

和:

$('#myform').submit(function(e) 
    { 
      e.preventDefault(); 
      var msg = $('#uname').val(); 
      $.post("c_test/test_submit", {uname: msg}, function(r) { 
       console.log(r); 
      }); 

      return false; 
    }); 

提交事件总是进入f orm而不是表单按钮。

+0

非常感谢。这是有益的。我也可以知道返回假的意义是什么? – idok

+1

返回false只是为了确保表单不会以正常方式通过浏览器提交。如果您返回true或完全不返回任何内容,这意味着您可能会发送表单。如果返回false,只需确保JavaScript会阻止您发生这种情况。这不是必需的,但它发生了很多次,我总是添加它,只是为了确保表格不会被发送:) –