2014-04-24 76 views
0

MVC中的我的視圖代碼:我想在複選框被選中時禁用視圖代碼中的下拉列表。複選框被選中時禁用下拉列表?

function SaveNewGroup() { 

    var group = RetrieveGroup(); 
    var IsChecked = $(IsAssociation).is(":checked"); 
    var url = (IsChecked) ? "/Administration/SaveNewGroupforIsAssociation" : "/Administration/SaveNewGroup"; 
    var userID = $('#groupunderwriter').val(); 

    $.ajax({ 
     type: "POST", 
     url: url, 
     data: group, 
     datatype: "json", 
     success: function (groupID) { 
      if (groupID > 0) { 

       GetGroups(); 

       $('#groupdialog').dialog('close'); 
      } 
      else { 
       alert("Unable to create Group."); 
      } 
     } 
    }); 
} 

複選框:

<tr> 
      <td> 
       <label>Is Association</label></td> 
      <td> 
       <input type ="checkbox" id="IsAssociation"/> 
      </td 

> 和我的下拉列表:

<tr> 
<td>Underwriter Name:</td> 
     <td> 
      <select id="groupunderwriter" style="width:150px;"> 
       <option value ="0"></option> 
       @foreach (RMS.UserService.User u in Model.GroupUnderWriters) 
       { 
        <option value="@u.UserID"> 
         @if(Model.MasterGroupAttribute.UserID == u.UserID) 
        { 
         @:selected="selected" 
        } 
        >@(u.FirstName + " " + u.LastName)</option> 

       } 
      </select> 
     </td> 

    </tr> 

如何禁用下拉列表時複選框被選中或啓用它不檢查的時候?

+1

哪裏是複選框:) –

+0

檢查[此評論](http://stackoverflow.com/questions/14337473/uncheck-and-check-checkboxes-when-clicking-dropdown-list ?rq = 1),這是完全相反的 – user3241019

回答

0

看看這個小提琴。這對我來說可以。我不知道爲什麼以上所有都不適合你。我只是使用jQuery ON事件偵聽器來防止競爭條件,並且在爲它們創建綁定時這些元素不存在。不太可能,但嘿,我的例子有用。這不是實現它的理想方式,但它可能會讓您對代碼的任何錯誤有所瞭解。

<input type ="checkbox" id="IsAssociation" /><span>your checkbox</span> 
<br/> 
<br/> 
<select id="groupunderwriter" style="width:150px;"> 
    <option value ="0">Hello</option> 
    <option value ="1">Goodbye</option> 
</select> 

$(document).on('change', '#IsAssociation', function(){ 
    if($(this).prop('checked')){ 
     $('#groupunderwriter').attr('disabled', 'disabled'); 
    } else { 
     $('#groupunderwriter').removeAttr('disabled'); 
    } 
}); 

http://jsfiddle.net/T83vs/

+1

謝謝你...... :)我已經完成了。 –

+0

沒問題,這不是理想的方式,但是我有一種感覺,在元素存在之前,jQuery的'ON'會解決這個問題。 –

0

我看不到任何複選框,無論如何,這是簡單的jQuery代碼來禁用複選框上的下拉選中。

$(function() { 
    $('#id_of_your_checkbox').change(function() { 
    if ($(this).is(':checked')) { 
     // disable the dropdown: 
     $('#id_of_dropdown').attr('disabled', 'disabled'); 
    } else { 
     $('#id_of_dropdown').removeAttr('disabled'); 
    } 
    }); 
}); 
+0

沒有工作,你能檢查更新的代碼..! –

0

一個簡短的版本是這樣的:

$('#IsAssociation').change(function() { 
    $('#groupunderwriter').attr('disabled', $(this).is(':checked')); 
}); 
+0

嘗試過,但沒有完成 –

+0

你把代碼放在哪裏?如果你把它放在標題中,在body之前,你必須在'$(function(){--code here--})之間包裝它,'所以它在dom被加載後運行。我更新了答案,以便使用您問題中的選擇器。 –

0

我覺得prop是一個更好的方式來做到這一點。

$("#groupunderwriter").prop("disabled", IsChecked); 

當然你也可以使用$("#checkbox").is(":checked")而不是IsChecked

相關問題