2016-03-20 22 views
2

私はかなり新しいajaxです。なぜ私の関数が起動していないのか不明です。私はテーブルを動的にMySQLデータベースからの値で構築している。テーブルをインラインで編集できるようにしようとしています。そう.....JavaScript関数がonblickまたはonclickで動作しない

<script> 
    function saveToDatabase(editableObj,column,id) { 
     $(editableObj).css("background","#FFF url(Loading_icon.gif) no-repeat right"); 
     $.ajax({ 
      url: "update/cpu.php", 
      type: "POST", 
      data:'column='+column+'&editval='+editableObj.innerHTML+'&id='+id, 
      success: function(data){ 
       $(editableObj).css("background","#FDFDFD"); 
      } 
     }); 
    } 
</script> 

として 次のように私が編集したいテーブルの部分が構築されています....

<tr class="table-row"> 
    <td><?php echo $row['idcpu']; ?></td> 
    <?php 
    echo "<td contenteditable=\"true\" onBlur=\"saveToDatabase(this,'name','".$row['idcpu']."');\" onClick=\"showEdit(this);\">".$row['name']." </td>"; 
    echo "<td contenteditable=\"true\" onBlur=\"saveToDatabase(this,'description','".$row['idcpu']."');\" onClick=\"showEdit(this);\">".$row['description']."</td>"; 
    echo "<td contenteditable=\"true\" onBlur=\"saveToDatabase(this,'price','".$row['idcpu']."');\" onClick=\"showEdit(this);\">".$row['price']."</td>"; 
    echo "<td contenteditable=\"true\" onBlur=\"saveToDatabase(this,'quantity','".$row['idcpu']."');\" onClick=\"showEdit(this);\">".$row['quantity']."</td>"; ?> 
</tr> 

とJavaScript私は、出力のさまざまな方法を試してみましたhtmlへのコードは問題ではないことを知っていますが、私はかなり新しくなったと私が言ったように、私は必要なものを簡単に逃してしまいました。どんな助けがあれば幸いです。

+0

'contenteditable'の代わりに' textarea'または 'input'を使用してください。 'contenteditable'は非常に複雑で親切ではありません。 'textarea'と' input'は標準で信頼性が高く、操作するクロスブラウザーの方法がいくつかあります。 – zer00ne

+0

私は入力を使用し始めましたが、onclickを働かせてもonblurはまだsaveToDatabase関数を起動しません。背景は変更されず、イメージはロードされず、PHPページは実行されません – JackGroves

+0

'innerHTML'ではなくフォーム要素に対して、JSでは' obj.value'を使用し、jQueryでは '$(obj).val()'を使用します。 'onblur'の代わりに' onchange'を使います。知っておく必要がある書式の使用に関する詳細があります。このリソースは素晴らしいスタートです:http://www.dyn-web.com/tutorials/forms/ – zer00ne

答えて

0

あなたのコードは正常に動作しているようです。あなたはここを見てとることができます。私はクロームV49でそれをテストしてみた

JSBin Example

@ zer00neは、<td>要素の中にネストして、入力変更時にajax呼び出しを実行すると、<input>を使用するようにしてください。ブラウザのサポートはずっと優れています。

+0

私はそれを変更しましたので、私はcontenteditableの代わりにテキスト入力を使用しました。あなたはそれが働いていると言いますが、私が編集したフィールドは編集可能ですが、変更は保持されません。私が参照しているPHPファイルは実行されておらず、CSSの変更は起こっていません。私のコードが何か他のことをすることを期待していますか?私はちょうどPHPスクリプトに値を送信する必要がある – JackGroves

+0

私は私のPHPページが入力された情報でデータベースを更新するスクリプトを実行することを言及することを忘れたと思う – JackGroves

関連する問題