2015-04-16 12 views
0

Я не владею JavaScript. Итак, я написал простую функцию для использования на HTML SELECT, но это не сработает.HTML select onChange не работает

JavaScript:

<script type="text/javascript" language="JavaScript"> 

function changeFormAction() { 

    var value = document.getElementById("format"); 

    if (value == "freeText") { 
     document.getElementById("regularExpression").setAttribute("disabled", false); 
    } 

} 

</script> 

HTML:

<select id="format" name="customFieldType" onChange='changeFormAction()'> 
    ... 
</select> 

<input id="regularExpression" type=text size=5 name="format" disabled="true"> 

Любая помощь будет высоко оценен

+0

вы получаете любой вид ошибки –

+0

Этот вопрос что-то еще .. Он ударил changeFormAction функция при изменении customField select list. –

+2

Вы проверяете значение поля disabled? Вам это действительно нужно? Кстати, это работает, но я не уверен, что это ваше намерение: http://jsfiddle.net/ew5cwnts/1/? – sinisake

ответ

2

значение в вашем коде содержит элемент «е Ormat». Обычно, чтобы получить значение, вы просто добавляете .value в качестве суффикса. Но так как это выбрать/выпадающее меню вы должны сделать:

var element = document.getElementById("format"); 
var value = element.options[element.selectedIndex].value; 
var text = element.options[element.selectedIndex].text; 

Теперь значение и текст будет содержать различные строки, как показано ниже:

<option value="thisIsTheValue">thisIsTheText</option> 

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

function changeFormAction() { 
    var element = document.getElementById("format"); 
    var sValue = element.options[element.selectedIndex].value; 
    var sText = element.options[element.selectedIndex].text; 
    if (sValue == "freeText" || sText == "freeText") { 
     document.getElementById("regularExpression").removeAttribute("disabled"); 
    } 
} 
+0

Было ли «предупреждение» о значении, вы правы, оно вернуло элемент, после того как ваше изменение ничего не вернуло, что может быть причиной? – Sasha

+1

Причина может заключаться в том, что '' ничего не содержит. у вас нет _value_ set. – Mackan

+0

Да, у меня есть, спасибо, спасибо. Обновил мой вопрос. – Sasha

2

вопрос что-то еще .. Он ударил функцию changeFormAction по изменению customField списка выбора ..

var value = document.getElementById("regularExpression"); 

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

var value = document.getElementById("regularExpression").value 

и добавление от комментариев для его отключения может быть также

document.getElementById("regularExpression").removeAttribute("disabled"); 
1

Это не работает, потому что вы пытаетесь извлечь значение текстового поля, используя document.getElementById ("regularExpression"). Value;

Но при загрузке страницы у вас нет значения по умолчанию в текстовом поле Возможно, вам понадобится выбрать значение поля выбора.

1

Я думаю, что нужно что-то вроде этого:

http://jsfiddle.net/ew5cwnts/2/

function changeFormAction(value) { 

     if (value == "freeText") { 
      document.getElementById("regularExpression").removeAttribute("disabled"); 
     } 

    } 

HTML:

<select name="customFieldType" onchange='changeFormAction(this.value)'> 
Смежные вопросы