Основываясь на информации из комментариев, я думаю, что это решение - то, что вы ищете. Обратите внимание, я перемещаю onchange
в функцию для ясности.
Вы видите, что опция «три» скрывает ввод текста, так как у него нет imei
.
Также обратите внимание на то, как я использую атрибут data-
внутри вашего параметра, чтобы вы также могли получать эту информацию независимо от параметра id
. Также обратите внимание, что this.form['device_imei_textinput']
не сработало. Требуется ссылка elements
.
function check_imei(obj, form) {
var imei = obj.options[obj.selectedIndex].getAttribute('data-imei');
if (imei == '') {
form.elements.device_imei_textinput.style.visibility='hidden';
} else {
form.elements.device_imei_textinput.style.visibility='visible';
}
}
<form>
<select id="type_id" name="device_type_id" onchange="check_imei(this, this.form);">
<option value='Select'>Select</option>
<option value="1" data-imei="foo">One</option>
<option value="2" data-imei="bar">Two</option>
<option value="3" data-imei="">Three</option>
</select>
<input type="text" id="device_imei_textinput" name="device_imei_textinput" />
</form>
Пример зеркала: https://jsfiddle.net/asp1hewx/
РЕДАКТИРОВАТЬ : Для адресации PHP сторона вещей, форма выше может быть сгенерирована с помощью:
<form>
<select id="type_id" name="device_type_id" onchange="check_imei(this, this.form);">
<option value='Select'>Select</option>
<?php foreach ($result as $row) { ?>
<option value="<?php echo $row['id'] . $row['serial_or_imei'] ?>" data-imei="<?php $row['serial_or_imei'] ?>"><?php echo $row['name'] ?></option>
<?php } ?>
</select>
<input type="text" id="device_imei_textinput" name="device_imei_textinput" />
</form>