2014-11-30 5 views
1

У меня есть некоторые элементы ввода на странице, и я пытаюсь включить их или отключить их в соответствии с настройкой пары переключателей. Я использую следующую функцию Javascript (консольный каротаж добавил для меня, чтобы увидеть, что происходит) ...jQuery отключение ввода не работает

function EnableIndividualOrCompanyControls(individual) { 
    console.log("EnableIndividualOrCompanyControls(" + individual + ")"); 
    console.log("Title value is " + $("#Title").val()); 
    console.log("Title was " + $("#Title").prop("disabled")); 
    $("#Title").prop("disabled", !individual); 
    console.log("Title is now " + $("#Title").prop("disabled")); 
    console.log(" "); 
    $("#Surname").prop("disabled", !individual); 
    $("#CompanyName").prop("disabled", individual); 
} 

Когда значение радио кнопки изменяется, метод вызывался, и параметр имеет правильный но входные данные Title, Surname и CompanyName не отключены.

Как образец из консоли выглядит следующим образом ...

EnableIndividualOrCompanyControls(false) 
Title value is Sir 
Title was false 
Title is now false 

Таким образом, функция вызывается, параметр имеет правильное значение, я правильно получать входной элемент заголовка (как вы можете увидеть из-за того, что он правильно сообщает, что его значение - «сэр»), но элементы не отключены.

Странно, что я использую точно такой же код в другом месте на странице, и он отлично работает. Эта функция работает ...

function EnableOnlineControls(enable) { 
    $("#UserName").prop("disabled", !enable); 
    $("#Password").prop("disabled", !enable); 
    $("#PasswordAgain").prop("disabled", !enable); 
} 

Кто-нибудь знает, почему первый не работает? В случае, если это помогает, вот HTML для этих элементов формы (окружающие дивы удалены для ясности) ...

<input class="form-control" id="Title" name="Title" value="" /> 
<input class="form-control" id="Surname" name="Surname" value="" /> 
<input class="form-control" id="CompanyName" name="CompanyName" value="" /> 

Я попытался заменить двойные кавычки одинарными, но это не имеет никакого значения.

+0

Предлагаю вам построить скрипку, на моей машине, ваш код работает. –

+0

ОК, здесь идет ... http://jsfiddle.net/g2ftjq8L/ - если вы нажмете галочку «Доступ в Интернет», правильность включения/выключения управления имени пользователя и пароля будет правильно, но если вы измените «индивидуальный/«радиокнопки», название, имя, фамилия и название компании не изменяются. Thx –

+0

Просто заметил, что скрипка включает предложение ArinCool, а также для одного из элементов управления, но, как вы можете видеть, ни один подход не работает. –

ответ

1

Ответ на JQuery readOnly strange behavior объясняет вашу проблему.

individual имеет специальную иллюстрацию; это строка. Вы должны правильно направить его на логическое значение:

$("#Surname").prop("disabled", (individual == "false" ? false : true)); 
+0

Это замечательно, спасибо. Я думал, что возвращаемые ценности были булевыми, и именно поэтому я был в замешательстве. Теперь я понимаю, что они простые строки, это имеет смысл. Еще раз спасибо. –

+0

Можете ли вы, пожалуйста, рассмотреть мой вопрос http://stackoverflow.com/questions/27216987/jquery-readonly-strange-behavior/27217016#27217016? Он получил -1, но я думаю, что он может быть полезен другим людям. –

+0

Просто сделал. На мой взгляд, это очень ясный и полезный ответ. Объясните одну из причин, почему я ненавижу Javascript! –