Sorry for late reply, I was very busy past few days.  I tried your
code but it is not work.
Even I add an alert in the following code:

Element.addMethods({
        openEditor: function(element){
                var element = $(element);
                var parts = element.id.split(/_/);
                alert(parts[0]);
                var editor = new Ajax.InPlaceEditor(
                        parts[1],
                        'your_server.php',
                        {
                                callback:function(form,value){
                                        return 'id=' + parts[1] +
                                        '&kind=' + parts[0] +
                                        '&value=' + encodeURIComponent
(value);
                                },
                                ajaxOptions: {
                                        onComplete: function(){
                                                this.dispose();
                                        }
                                },
                                cols:20,
                                rows:10
                        }
                );
                editor.enterEditMode('click');
        }

});

it is not work.  Anyway, I solved the problem use a hard code way.
But I really hope I can run the program by using your suggested way.
And regarding the server side code,
is it ActiveRecord php code?  I get confused.  Thanks in advance.

if($item = ActiveRecord::FindById('items',$_POST['id'])){
        $field = clean($_POST['kind']);
        if(in_array($field,$array_of_legal_fields)){
                $item->$field = clean($_POST['value']);
                $item->save();
                header('Content-type: text/html; charset=utf-8');
                print $item->$field;
        }else{
                header('HTTP/1.0 403 Forbidden');
        }
}else{

        header('HTTP/1.0 404 Not found');

}

On Feb 19, 3:21 am, Walter Lee Davis <[email protected]> wrote:
> Try using a different model. I would use the ID of the element to  
> carry the Here's an adaptation of what I do on a page that can have  
> thousands of DIVs, each of which will be individually editable at a  
> click:
>
> <div id="editable_stuff">
> <div id="div_1">
> <h2 id="title_1" class="title">A lovely title</h2>
> <p id="description_1" class="description">Some incredibly useful text  
> here</p>
> </div>
> ...
> <div id="div_11">
> <h2 id="title_11" class="title">A lovely title</h2>
> <p id="description_11" class="description">Some incredibly useful text  
> here</p>
> </div>
> </div>
>
> //extend a few things for convenience (watch out for line-breaks below):
> Object.extend(Ajax.InPlaceEditor.prototype, {
>         onclickCancel: function() {
>                 this.onComplete();
>                 this.leaveEditMode();
>                 this.dispose();
>                 return false;
>         },
>         convertHTMLLineBreaks: function(string) {
>                 return string.replace(/<br[^>]*?>/gi, "\n");
>         }});
>
> Element.addMethods({
>         openEditor: function(element){
>                 var element = $(element);
>                 var parts = element.id.split(/_/);
>                 var editor = new Ajax.InPlaceEditor(
>                         parts[1],
>                         'your_server.php',
>                         {
>                                 callback:function(form,value){
>                                         return 'id=' + parts[1] +
>                                         '&kind=' + parts[0] +
>                                         '&value=' + encodeURIComponent(value);
>                                 },
>                                 ajaxOptions: {
>                                         onComplete: function(){
>                                                 this.dispose();
>                                         }
>                                 },
>                                 cols:20,
>                                 rows:10
>                         }
>                 );
>                 editor.enterEditMode('click');
>         }
>
> });
>
> //now we watch the entire container div for clicks, and edit what  
> actually gets clicked
>
> $('editable_stuff').observe('click',function(evt){
>         var elm = Event.element(evt);
>         if(elm.hasClassName('title') || elm.hasClassName('description')){
>                 elm.openEditor();
>         }
>
> });
>
> On the server, you want to look for $_POST['id'], $_POST['kind'], and  
> $_POST['value'], and use them to figure out which item you are editing  
> and which field of that item.
>
> if($item = ActiveRecord::FindById('items',$_POST['id'])){
>         $field = clean($_POST['kind']);
>         if(in_array($field,$array_of_legal_fields)){
>                 $item->$field = clean($_POST['value']);
>                 $item->save();
>                 header('Content-type: text/html; charset=utf-8');
>                 print $item->$field;
>         }else{
>                 header('HTTP/1.0 403 Forbidden');
>         }}else{
>
>         header('HTTP/1.0 404 Not found');
>
> }
>
> The only requirement for this to work would be that you follow a  
> naming convention with your elements that matches your DB schema (or  
> provide some sort of concordance in the server code).
>
> Walter
>
> On Feb 18, 2009, at 11:29 AM, SamuelXiao wrote:
>
> > My question is, how can I check whether the user click the title or
> > the content?  If he clicks the content, modify it, the new content
> > will be sent and updated.  And if he clicks the title, modify it, the
> > new title will be sent and updated.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to