Текстовое поле блокировки MVC3 на основе выбора в раскрывающемся меню - PullRequest
2 голосов
/ 11 февраля 2012

Я делаю форму, используя ASP MVC 3, и я новичок не только в веб-разработке, но и в ASP.NET MVC.

У пользователя будет возможность выбрать один из заданных вопросов из выпадающего меню или написать свой.

То, что я пытаюсь сделать, это заблокировать текстовое поле, в котором пользователь будет вводить вопрос в случае, если пользователь ранее выбрал какой-либо вопрос из выпадающего меню.

Я могу использовать либо JavaScript, либо использовать MVC (желательно использовать код MVC, но JavaScript также может работать).

<tr> 
<td width="40%" height="31">
<div align="right"><strong>Security question:</strong></div>
 </td>
 <td width="60%" height="31"> 
 @Html.DropDownListFor(m => m.PickSecretQuestion, new[] {

   new SelectListItem() { Text = "---select a question --- or create your own below --", Value = "createNew"},
   new SelectListItem() { Text = "Mother's Maiden Name?", Value = "Mother's Maiden Name?"},
   new SelectListItem() { Text = "Father's Middle Name?", Value = "Father's Middle Name?"},
   new SelectListItem() { Text = "What High School did you attend?", Value = "What High School did you attend?"},
   new SelectListItem() { Text = "First company you worked for?", Value = "First company you worked for?"}

   }
    </td>  
    </tr>

     <tr> 
     <td width="40%" height="31">
     <div align="right"><strong>Or create one here:</strong></div>
     </td>
     <td width="60%" height="31"> 
         @Html.TextBoxFor(m => m.SecretQuestion)
         <span style="color:Red">  @Html.ValidationMessageFor(m => m.SecretQuestion </span>
     </td>  
     </tr>

1 Ответ

0 голосов
/ 11 февраля 2012

Это определенно намного проще с jQuery .Вот как бы я поступил так:

$('#yourDropDownId').change(function() {
    if ($(this).attr('selectedIndex') == 0)
        $('#yourTextBoxId').attr('disabled', 'disabled');
    else
        $('#yourTextBoxId').removeAttr('disabled');
});

Это логика, которая действительно должна обрабатываться на клиенте , а не на сервере .Определенно имеет смысл использовать мощь и простоту jQuery .

В вашем View вы можете установить id s для ваших элементов DOM, используя объект htmlAttributes для вспомогательных методов.Вот изменение, которое вы внесете в TextBoxFor().Это установит ваш id на yourTextBoxId.

@Html.TextBoxFor(m => m.SecretQuestion, new { id = "yourTextBoxId" })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...