2016-06-15 2 views
0

У меня есть простая форма опроса, которую я разработал, но по какой-то причине одна строка кода не работает.Textarea locking

В вопросе 5. Если пользователь выбрал переключатель YES, то они должны ввести что-то в текстовое поле или не должны быть отправлены.

Если нет, то текстовое поле должно быть заблокировано, поэтому ничто не может быть введено.

Вот код: Спасибо за помощь дам и джентльмен

5. Are you using other non-franchise service centres? 
<br> 
*if yes is there any other reason you would do so other than price 
<br> 
<input type="radio" name="question5" 
<?php if (isset($question5) && $question5=="Yes") echo "checked";?> 
value="Yes">Yes 
<br> 
<input type="radio" name="question5" 
<?php if (isset($question5) && $question5=="No") echo "checked";?> 
value="No">No 
<br> 
<textarea name="question5" rows="5" cols="40"><?php echo $question5 </textarea> 
+2

php работает на сервере. он не может ничего делать с формой после ее отправки клиенту. вам нужен javascript. –

+0

@MarcB я имею ввиду перед отправкой его сэром. Форма должна понимать, что если вопрос 5 имеет Да, то они должны ввести что-то в текстовое поле. Если нет, то текстовое поле заблокировано. –

+0

Попробуйте с JavaScript –

ответ

1

Option1: скрыть текстовое поле

function check5(selectedType){ 
 
    if (selectedType == 'Yes'){ 
 
    document.getElementById('5textarea').style.display = 'block'; 
 
\t 
 
    } else{ 
 
    
 
    document.getElementById('5textarea').style.display = 'none'; 
 
    
 
    } 
 
}
5. Are you using other non-franchise service centres? 
 
<br> 
 
*if yes is there any other reason you would do so other than price 
 
<br> 
 
<input type="radio" name="question5" value="Yes" onclick="check5(this.value)"> Yes 
 
<br> 
 
<input type="radio" name="question5" value="No" onclick="check5(this.value)"> No 
 
<br> 
 

 
<textarea id="5textarea" name="question5" rows="5" cols="40" style="display:none"></textarea>

Option2: включить/отключить текстовое поле (NOT TESTED):

5. Are you using other non-franchise service centres? 
<br> 
*if yes is there any other reason you would do so other than price 
<br> 
<input type="radio" name="question5" value="Yes" onclick="check5(this.value)"> Yes 
<br> 
<input type="radio" name="question5" value="No" onclick="check5(this.value)"> No 
<br> 
<textarea id="5textarea" name="question5" rows="5" cols="40" disabled="true"></textarea> 

и изменить JavaScript, чтобы:

function check5(selectedType){ 
if (selectedType == 'Yes'){ 
    document.getElementById("5textarea").disabled = false; 

} else{ 

    document.getElementById("5textarea").disabled = true; 
} 
} 
0

Вы должны сделать это с JavaScript, так как PHP работает только на сервере, не в браузере!

В этом коде текстовое поле отключается, если не требуется, и если «да» проверяются и текстовое поле не содержит достаточное количество текста, при отправке формы появляется ошибка:

// Javascript: 
 
function validate() { 
 
    var radioYes = document.getElementById('radioYes'); 
 
    var textarea = document.getElementById('textarea'); 
 
    
 
    if (radioYes.checked && textarea.value.length < 10) { 
 
     alert('Enter at least 10 characters!'); 
 
     textarea.focus(); 
 
     return false; 
 
    } 
 
} 
 

 
function toggle(value) { 
 
\t document.getElementById('textarea').disabled = value; 
 
}
/* CSS: */ 
 
* { 
 
    font-family: sans-serif; 
 
    margin: 4px; 
 
}
<!-- HTML/PHP: --> 
 
<form action="#"> 
 
    5. Are you using other non-franchise service centres?<br> 
 
    *if yes is there any other reason you would do so other than price?<br> 
 
    
 
    <input type="radio" name="question5" value="Yes" onchange="toggle(this.selected)" id="radioYes">Yes<br> 
 
    <input type="radio" name="question5" value="No" onchange="toggle(!this.selected)">No<br> 
 
    
 
    <textarea id="textarea" name="question5" rows="5" cols="40" disabled></textarea><br> 
 

 
    <input type="submit" value="Send" onclick="return validate()" /> 
 
</form>

JSFiddle