0

ダイアログで開くフォームがあります。フィールドの 1 つにオートコンプリートがあります。すべてのフィールドが構築され、サーバーの値がフォームに事前入力されるように格納されます。

var mydiv = jQuery("#editform");
var $myform = jQuery("<form id='EditForm' method='post' action='index.php?option=com_component&task=edit'></form>");
...
var $mylabel10 = jQuery("<label for='EditSelect'>A label</label>");
var $myinput9 = jQuery("<input id='EditSelect' name='EditSelect' type='text' />");
var $mylabel9 = jQuery("<label for='EditSelect2'>Another label</label>");
var $myinput8 = jQuery("<input id='EditSelect2' name='add_path' value='" +path + "' />"); //path is a value passed in from the server

$myform.append(... $mylabel10, $myinput9, $mylabel9, $myinput8);
mydiv.append($myform);

    //autocomplete code - order is important to have autocomplete go outside dialog
    var available = [
             { label : 'foo', value : 'bar' },
             { label : 'xyz', value : 'abc' },
             ...
         ];
    jQuery( "#EditSelect", mydiv ).autocomplete({
        source: available,
        focus : function(){ return false; }
    })
    .on( 'autocompleteselect', function( e, ui ){
        var t = jQuery(this),
          details = jQuery('#EditSelect2'),
          label = ( e.type == 'autocompleteresponse' ? ui.content[0].label :  ui.item.label ),
          value = ( e.type == 'autocompleteresponse' ? ui.content[0].value : ui.item.value );

      t.val( label );
      details.val( value ); //doesn't update the form here?

      return false;
    });

     // get reference to autocomplete element
    var autoComplete = jQuery("#EditSelect", mydiv).autocomplete("widget");

    var dialogOpts = {
            modal: true,
            autoOpen: true,
            resizable: false,
            width: 525,
            height: 'auto',
            title: 'Edit settings'
        };

    mydiv.dialog(dialogOpts);  
    autoComplete.insertAfter(mydiv.parent());

この編集ダイアログにはオートコンプリートがあり、選択すると他の入力フィールドが更新されます ( #EditSelect2)。現在、 #EditSelect2 にはサーバーからの値があります (変数内path)。

オートコンプリートから新しい値が選択されると、このコードのためにフォームが更新されることが期待されます: details.val( value );. 現在、オートコンプリートは正常に機能しますが、pathオートコンプリートで新しい選択肢を選択した後、サーバー ( ) からの値が更新されません。

これが理にかなっていることを願っています。

4

1 に答える 1

1

myinput8 ステートメントに小さな構文エラーがあります。

$myinput8 = jQuery("<input id='EditSelect2' name='add_path' value='" +path + " />");

次のようにする必要があります。

$myinput8 = jQuery("<input id='EditSelect2' name='add_path' value='" +path + "' />");

最後に余分な一重引用符があることに注意してください。

于 2013-06-22T21:24:06.227 に答える