0

BSポップオーバーでajax formRemoteを使用しようとしています。単純なフォームは機能しますが、ajax の実装は機能しません。

1) gspコード

    <div id="addfolder">
            <a href="#" class="btn" id="nrfolder" rel="popover">
            <i class="icon-folder-close icon-large"></i></a><%--<g:message code="folder"  args="[entityName]" default="New Folder"/>--%></a>
        </div>
        <div id="newRootFolder" style="display:none;">
        <form class="form-inline" style="width:280px;">
        <g:formRemote name="createRootFolder" url="[controller:'folders',action:'create']" onLoading="showModalSpinnerNewFolder();" onComplete="hideModalSpinnerNewFolder();" onSuccess="doResponseNewFolder(data);" >
              <g:textField  name="folderName" class="input-small" type="text" placeholder="New folder"/>
              <input type="submit" value="Create" class="btn btn-info" />
              <a href="#" class="btn"  onclick="$('#nrfolder').popover('hide')"/>Cancel</a>
        </g:formRemote>
</g:formRemote>
    </form>
    </div>

2) jquery によるポップオーバー呼び出し

$('#nrfolder').popover({placement:'right',title:'New Root Folder',html:true,content: function() { return $('#newRootFolder').html();} });

3) jquery 成功イベント: doResponseNewFolder 関数

function doResponseNewFolder(data) {
        alert('toto' + data.success);
        if (data.success == 'true') {
            var msg = data.msg;
            // reload tree view
            $('#tree').dynatree('getTree').reload();
        } else {
            var msg = $('<ul class="errors">');
            for (var i = 0; i < data.errorList.length; i++) {
                msg.append('<li>' + data.errorList[i] + "</li>");
            }
        }
        $('#new_folder_msg').html(msg);
        $('#new_folder_msg').show();
    }

何か案が?

4

1 に答える 1

1

フォームを台無しにしているようです。説明させてください。Grailsg:formRemoteは ajax Web フォームを作成するためのヘルパーであるため、結果の HTML を見ると、呼び出し時にフォームが生成されます。

実際には、有効な HTML 構文ではないフォームを既に開いています。その最初のフォームは存在しないはずです。その属性をユーザーに与えることができg:formRemote、Grails はそれらを生成された に渡しますform

<g:formRemote class="form-inline" style="width:280px;" name="createRootFolder" url="[controller:'folders',action:'create']" onLoading="showModalSpinnerNewFolder();" onComplete="hideModalSpinnerNewFolder();" onSuccess="doResponseNewFolder(data);" >
      <g:textField  name="folderName" class="input-small" type="text" placeholder="New folder"/>
      <input type="submit" value="Create" class="btn btn-info" />
      <a href="#" class="btn"  onclick="$('#nrfolder').popover('hide')"/>Cancel</a>
</g:formRemote>

これは、他の形式が混同されていないため、十分です。

于 2013-04-04T21:47:18.327 に答える