2012-08-16 163 views
0

我的页面有多个对话框。我已经为它定义了单独的div部分。根据要求,我必须在对话框中禁用保存按钮,直到所有必填字段未填充。我可以禁用它。我打开其他对话框时出现问题。对于这些对话框,保存按钮也会被禁用。多用户界面对话框:禁用按钮会影响其他对话框

我可以放置脚本来启用对话框上的按钮,我不想那样做。我有其他解决方案来解决这个问题吗?

Mypage.cshtml

<div id="MyDialg" title="Dialog 1"> 
</div> 

<input id="btnMy" type="button" value="Dialog1" /> 

MyJs.JS使用以下行上的负载来禁用 '保存' 按钮上对话框

$('#MyDialg').dialog({ 
    autoOpen: false, 
    width: 400, 
    height: 350, 
    modal: true, 
    resizable: false, 
    buttons: { 
     "Cancel": function() { $(this).dialog("close"); }, 
     "Save": function() { 
     } 
    } 
}); 

$("#btnMy").button().live("click", function() { 
    var diag = $('#MyDialg'); 
    diag.load("Action/Controller", '', function() { 
    }); 

    $(diag).dialog('open'); 
    return false; 
}); 

AM:

_MyDialog.cshtml

$(".ui-dialog-buttonpane button:contains('Save')").button("enable"); 

的源代码(HTML对话框之一)

<DIV class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix" jQuery17205878367688005092="61" sizcache04606232417093721="71" sizset="0"><SPAN id=ui-dialog-title-MyDialg1 class=ui-dialog-title jQuery17205878367688005092="62">MyDialg title</SPAN><A class="ui-dialog-titlebar-close ui-corner-all" role=button href="#" jQuery17205878367688005092="60"><SPAN class="ui-icon ui-icon-closethick" jQuery17205878367688005092="63">close</SPAN></A></DIV> 
<DIV style="MIN-HEIGHT: 0px; WIDTH: auto; HEIGHT: 247px" id=MyDialg1 class="ui-dialog-content ui-widget-content" jQuery17205878367688005092="58" scrolltop="0" scrollleft="0"> 
<FORM id=form1 method=post action=/action1/controllername jQuery17205878367688005092="172" novalidate="novalidate" data-ajax-success="showSuccessMessage" data-ajax-method="POST" data-ajax="true" data-ajax-failure="showErrorMesage"> 
<BR> 
<DIV class=field><LABEL for=Name>Description: </LABEL><SUP class=mandatory>*</SUP> <INPUT id=Name class="text-box single-line" type=text name=Name> <BR><SPAN class=field-validation-valid data-valmsg-replace="true" data-valmsg-for="Name"></SPAN></DIV><BR><BR> 
<HR> 
<BR> 
</FORM><BR></DIV> 
<DIV class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix" sizcache04606232417093721="71" sizset="1"> 
<DIV class=ui-dialog-buttonset sizcache04606232417093721="71" sizset="1"><BUTTON aria-disabled=false class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role=button type=button jQuery17205878367688005092="64"><SPAN class=ui-button-text>Cancel</SPAN></BUTTON><BUTTON aria-disabled=true class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only ui-button-disabled ui-state-disabled" role=button disabled type=button jQuery17205878367688005092="65"><SPAN class=ui-button-text>Save</SPAN></BUTTON></DIV></DIV> 
+0

表现出一定的HTML的..是有您的对话框之间的任何独特区别,您可以在脚本中将它们区分开来? – 2012-08-16 17:55:01

+0

我不明白你在说什么。我如何区分它们?例子我有5个不同的点击事件来打开5个对话框。 – user1480864 2012-08-16 17:57:49

回答

1

您可以使用您的对话框ID为起点指定的特定按钮。因为我认为你在你的代码中有什么特定于你想要启用/禁用按钮的对话框。您可以使用下面的代码找到“保存”按钮的具体,这将不会影响你的其他对话框

$('#MyDialg').find('button:contains("Save")').button('disable'); 
$('#MyDialg').find('button:contains("Save")').button('enable'); 

编辑:

有2种方法可以做到这一点。您可以遍历当前的结构使用以下

  1. 开始从您的对话ID
  2. 找到包含保存按钮文本
  3. 获得按钮容器和禁用它的主对话框
  4. 发现跨度找到它

代码

$('#MyDialg').closest('div.ui-dialog').find('span.ui-button-text:contains("Save")').closest('.ui-button').button('disable'); 

http://jsfiddle.net/wirey00/zDUQX/

或者你可以给你的按钮的ID

buttons: { 
    "Cancel": function() { $(this).dialog("close"); }, 
    "Save": { 
     text: 'Save', // <-- text to show 
     id: 'test', // <-- this sets the id to TEST 
     click: function() { 
       // code here 
     } 
    } 

然后只需用ID来禁用它

$('#test').button('disable'); 

http://jsfiddle.net/wirey00/zf9Wp/