Mam formularz z 2 polami wyboru i 2 sekcjami wejściowych pól tekstowych, które są wyłączone.Włączanie i wyłączanie pola tekstowego, jeśli zaznaczono to pole wyboru:
Jeśli tylko pierwsze pole jest zaznaczone następujące pole tekstowe wejściowy powinien być włączony:
- Potwierdź Email
- Pełna nazwa
Jeśli tylko druga opcja jest zaznaczona należy włączyć następujące pola tekstowe:
- Potwierdź Email
- Kolor
- Rozmiar
- model
Jeśli oba pola wyboru są zaznaczone niż wszystkich pól tekstowych wejściowych powinno być włączone. Problem polega na tym, że jeśli oba pola wyboru są zaznaczone, to odznaczono, że 2 pola tekstowe wiadomości e-mail stają się nieaktywne.
Oto skrzypce do tego, co mam. Mogę używać jQuery. http://jsfiddle.net/Ujxkq/
Tu jest mój HTML:
<form id="myForm">
<h3>Section 1</h3>
Checkbox 1: <input type="checkbox" name="checkbox1" id="checkboxOne" onclick="enableDisableEmail(this.checked, 'emailAddr', 'emailConfirm');enableDisableSection1(this.checked, 'fullName');" />
<p><input type="text" id="emailAddr" name="myEmailAddr" placeholder="Email" disabled /></p>
<p><input type="text" id="emailConfirm" name="myEmailConfirm" placeholder="Confirm Email" disabled /></p>
<p><input type="text" id="fullName" name="myFullName" placeholder="Full Name" disabled /></p>
<h3>Section 2</h3>
Checkbox 2: <input type="checkbox" name="checkbox2" id="checkboxTwo" onclick="enableDisableEmail(this.checked, 'emailAddr', 'emailConfirm');enableDisableSection2(this.checked, 'color', 'size', 'model');" />
<p><input type="text" id="color" name="myColor" placeholder="Color" disabled /></p>
<p><input type="text" id="size" name="mySize" placeholder="Size" disabled /></p>
<p><input type="text" id="model" name="myModel" placeholder="Model" disabled /></p>
</form>
Oto mój Javascript:
function enableDisableEmail(isEnabled, email, confirm) {
document.getElementById(email).disabled = !isEnabled;
document.getElementById(confirm).disabled = !isEnabled;
}
function enableDisableSection1(isEnabled, fullName) {
document.getElementById(fullName).disabled = !isEnabled;
}
function enableDisableSection2(isEnabled, color, size, model) {
document.getElementById(color).disabled = !isEnabled;
document.getElementById(size).disabled = !isEnabled;
document.getElementById(model).disabled = !isEnabled;
}
Dzięki. Nie użyłem jQuery, ponieważ nie sądziłem, że będzie to potrzebne, mimo że mam je dostępne. Przepraszamy za tagowanie jQuery, niż gdyby było to mylące. – Mdd
To nie problem. Jeśli masz już jQuery dostępne i załadowane na stronie, ja osobiście wolę tę wersję, ponieważ jest ona bardziej kompaktowa i usuwa logikę aplikacji (onclick) z osadzenia w kodzie HTML. – jcsanyi
Dzięki jcsanyi. Czy mógłbyś wytłumaczyć, w jaki sposób evaluta z pliku! (Cb1 || cb2) w funkcji .prop()? .prop ('disabled',! (cb1 || cb2). Myślę, że rozumiem, ale nie jestem pewien, czy to zrobiłem. – Mdd