2014-09-26 3 views
0

У меня есть форма, которая позволяет пользователю выбирать частоту приема (например, ежечасно) и отображает коэффициент годового учета (2080, для почасового). Мой код позволяет пользователю изменять коэффициент годового учета, но я хочу, чтобы он отображался только, а не редактировался. Может кто-нибудь помочь?Как сделать результирующую ячейку только для чтения?

Код:

function register() { 
    document.all.NewFrequency.onchange = OnChange; 
} 

function Init() { 
    var selectionValue = document.all.AnnualizingFactor; 
    register(); 
    if (selectionValue.value == "") { 
     OnChange(); 
    } 
} 

function OnChange() { 
    var selectValue = document.all.NewFrequency; 
    var selectionValue = document.all.AnnualizingFactor; 
    if (selectValue.options[selectValue.selectedIndex].value == "Yearly") { 
     selectionValue.value = "1"; 
    } 
    if (selectValue.options[selectValue.selectedIndex].value == "Weekly") { 
     selectionValue.value = "52"; 
    } 
    if (selectValue.options[selectValue.selectedIndex].value == "Unit") { 
     selectionValue.value = "2080"; 
    } 
    if (selectValue.options[selectValue.selectedIndex].value == "SemiWeekly") { 
     selectionValue.value = "104"; 
    } 
    if (selectValue.options[selectValue.selectedIndex].value == "Semimonthly") { 
     selectionValue.value = "24"; 
    } 
    if (selectValue.options[selectValue.selectedIndex].value == "Quarterly") { 
     selectionValue.value = "4"; 
    } 
    if (selectValue.options[selectValue.selectedIndex].value == "Monthly") { 
     selectionValue.value = "12"; 
    } 
    if (selectValue.options[selectValue.selectedIndex].value == "Hourly") { 
     selectionValue.value = "2080"; 
    } 
    if (selectValue.options[selectValue.selectedIndex].value == "Daily") { 
     selectionValue.value = "365"; 
    } 
    if (selectValue.options[selectValue.selectedIndex].value == "Biweekly") { 
     selectionValue.value = "26"; 
    } 
    if (selectValue.options[selectValue.selectedIndex].value == "None") { 
     selectionValue.value = "0"; 
    } 
} 
+0

Set свойство readonly - true. – j08691

ответ

0

Как @ j08691 сказал, вы должны отметить поле только для чтения:

<input type="text" readonly name="AnnualizingFactor" /> 

Или установить только для чтения свойство ввода программно:

function Init() { 
    var selectionValue = document.all.AnnualizingFactor; 
    selectionValue.readonly = true; 
    register(); 
    if (selectionValue.value == "") { 
     OnChange(); 
    } 
} 
+0

Спасибо за ответ Роб. Это похоже на то, что я пытался. Проблема заключается в том, что кажется, что поле читается только до того, как оно будет записано в форму и, таким образом, никогда не будет отображаться. Мне нужно, чтобы процесс отображался на странице, но не в редактируемой коробке, как сейчас. Не уверен, что это возможно. Все, что я пробовал, похоже, препятствует тому, чтобы годовой фактор не отображался вообще. Снова любая помощь очень ценится. –

+0

Я не уверен, почему поле не отображается, 'readonly' должно сделать поле неизменным. Возможно, я запутался в вашем случае использования, помогает ли эта скрипка? http://jsfiddle.net/ubpmfj2k/ –

Смежные вопросы