2015-01-09 140 views
0

對話框是使用JSTL foreach標籤生成的。jQuery UI對話框不是第二次打開,但後臺無法訪問

我第一次嘗試打開對話框(其中任何一個)時,它會正常打開,但第二次嘗試打開它時,由於對話框是模態的,背景變成灰色並且無法訪問,但對話窗口不是所示。

這個問題有很多問題,我讀了很多,但據我瞭解,他們都沒有描述這種情況。

這是我的HTML:

<button id="buttonAddTask${category.id}" class="buttonAddTask">Add Task</button> 

... 

<div id="dialog${category.id}" title="Create new task" class="task-dialog"> 
<form:form id="taskForm${category.id}" 
    action="${contextPath}/someAction" 
    method="POST" modelAttribute="someAttribute"> 
    <fieldset> 
     <form:input type="text" path="taskName" id="taskName" 
      class="text ui-widget-content ui-corner-all" /> 
     <form:textarea rows="4" path="taskDescription" 
       id="taskDescription" name="taskDescription" 
       class="text ui-widget-content ui-corner-all"> 
     </form:textarea> 
    </fieldset> 
</form:form> 
</div> 

這是我的js代碼:

$(function() { 

    var form; 
    var taskDialog = $(".task-dialog"); 
    var buttonAddTask = $(".buttonAddTask"); 

taskDialog.dialog({ 
    autoOpen : false, 
    height : 500, 
    width : 415, 
    modal : true, 
    buttons : { 
     "Create task" : addTask, 
     Cancel : function() { 
      taskDialog.dialog("close"); 
     } 
    }, 
    close : function() { 
     var form = $(this).find("form")[0].reset(); 
     allFields.removeClass("ui-state-error"); 
     } 
    }); 

    function addTask() { 
     var thisId = $(this).attr("id").substring(6, 106); 
     $("#taskForm" + thisId).submit(); 
     return true; 
    } 

buttonAddTask.on("click", function() { 
     var thisId = $(this).attr("id"); 
     var idNumber = thisId.substring(13, 14); 
     $("#dialog" + idNumber).dialog("open"); 
    }); 
}); 

我打開與.dialog對話框( 「開」),之後將其關閉。對話框是通過id選擇器訪問的,所以它在被移動到body標籤的末尾後應該是不可信的。我做錯了什麼,或者我需要做什麼才能第二次顯示對話?

我正在使用jQuery 2.1.1和jQuery-ui 1.11.2。

回答

0

我在一段時間後明白了。

這是從一些例子複製/粘貼,它被修改,以適應我的需要。訣竅是在關閉函數中刪除未聲明的變量「allFields」。

行刪除:

allFields.removeClass("ui-state-error"); 

如果你有類似的問題,請檢查您關閉功能未申報的可變因素,並刪除它們。