2012-10-09 131 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會阻止您發生這種情況。這不是必需的,但它發生了很多次,我總是添加它,只是爲了確保表格不會被髮送:) –