2013-07-01 4 views
-2

Я пытаюсь сделать текстовое поле только для чтения или нет, в зависимости от значения флажка personalLoan. Если установлен флажок personalLoan, я хочу, чтобы текст был неточно. Если он не установлен, я хочу, чтобы текстовое поле было только для чтения. Вот одна из строкпроверить, установлен ли конкретный флажок в td с помощью jquery

<tr id="mytableRows"> 
    <td class="even"><input type="checkbox" value="true" name="homeLoan" ></td> 
    <td class="odd"><input type="checkbox" value="true" name="autoLoan" ></td> 
    <td class="even"><input type="checkbox" value="true" name="personalLoan" ></td> 
    <td class="odd"><input type="checkbox" value="true" name="noLoan" ></td> 
    <td class="odd"><input type="text" name="peronalAmount" value="1" readonly></td> 
</tr> 

Я до сих пор есть этот код

$(document).ready(function(){ 
    $('.test tr').click(function (event) { 
     $(this).find(':checkbox').each(function(p){ 
      if($(this).attr('name') == 'personalLoan'){ 
       if ($(this).is(':checked')) { 
        alert("checked"); 
       }else{ 
        alert("unchecked"); 
       } 
      } 
     }); 
    }); 
}); 

Это говорит мне, что текущее состояние флажка, но то, что мне действительно нужно знать OnChange флажка personalLoan, так что я может сделать текстовое поле только для чтения или нет в этой строке (тд)

благодаря

+0

Возможный дубликат [Сделать поле только для чтения - checkbox - jQuery] (http://stackoverflow.com/questions/7419383/make-field-readonly-checkbox-jquery) – Mathletics

+1

[или дюжина других подобных сообщений] (http: //stackoverflow.com/search?q=make+checkbox+redonly) – Mathletics

+1

Каким образом этот вопрос «очень отличается»? * Если * это другое, просто не говорите нам, чтобы мы более внимательно читали, * объясняли * различия. Мы не пытаемся закрыть ваш вопрос мстительно, но мы можем неправильно понять или просто * пропустить * различия. Кстати, я подозреваю, что у вас может быть опечатка во имя вашего ввода текста, 'peronalLoan' должен, я полагаю, быть' personalLoan'? –

ответ

1

Для моего собственного здравомыслия, вот что я понимаю, решение должно быть.

$('input[type=checkbox]', '.test').on('change', function(e) { 
    if (this.name === 'personalLoan') { 
     $(this).parents('tr').find('input[type=text]').prop('readonly', !this.checked); 
    } 
}); 

Предполагая таблицу с классом test, это позволяет вводить, когда personalLoan проверяется, и переключается на ReadOnly, когда бесконтрольно.

Demo on jsFiddle. (Я выделил флажок в красном.)

Если это не так, я действительно не знаю, что вы пытаетесь сделать.

+0

Я придумал почти такое же решение. Но ваш очень элегантный. Я буду использовать ваши – Autolycus

+0

Я хотел бы отметить, что это точно такая же проблема, как и предыдущая. – Mathletics

1

мне кажется, что вы действительно хотите, радио кнопки не флажки и что количество Fiel d должен быть отключен, а не только для чтения, если пользователь выбирает «без кредита».

Во всяком случае, это подход, который вы можете предпринять. Я поставил код в строке для удобства, он может быть повторно реализован в jQuery или что угодно, это всего лишь пример того, как делать то, что вы пытаетесь сделать.

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

<form onclick=" 
    var form = this; 
    setTimeout(function() { 
    form.personalAmount.readOnly = form.loanType[3].checked; 
    },0); 
"> 
<table> 
    <tr> 
    <td><input type="radio" value="homeLoan" name="loanType">Home</td> 
    <td><input type="radio" value="autoLoan" name="loanType">Auto</td> 
    <td><input type="radio" value="personalLoan" name="loanType">Personal</td> 
    <td><input type="radio" value="true" name="loanType">None</td> 
    <td><input type="text" name="personalAmount" readonly></td> 
    <tr> 
    <td colspan="4"> 
     <input type="reset"> 
</table> 
</form> 
+0

Благодарим вас за ответ RobG.Я, однако, смог закодировать его с помощью флажков. Я добавлю свой ответ здесь, чтобы помочь сообществу. – Autolycus