2013-12-20 5 views
-1

Мне действительно не нравится задавать вопросы и быть зависимыми от других, но я должен! Мне нужен вход пользователя от двух до пяти слов, обозначаемый fontvorto1, fontvorto2, fontvorto3, fontvorto4 и fontvorto5. Я должен быть уверен, что он/она не оставляет пустого промежуточного текстового поля. Итак, при каждом пробном запуске я проверяю по onclick, было ли заполнено поле выше. Если нет, пользователь получает предупреждение, и вход прерывается. Чтобы свести к минимуму объем кода, я создал пять функций следующей модели:Как присвоить значения булевому объекту

function fV2k() {x = document.getElementsByName('fontvorto1')[0].value.substr(0, 6); return Boolean(x == "Skribu" || x === "");} 
    function fV3k() {x = document.getElementsByName('fontvorto2')[0].value.substr(0, 6); return Boolean(x == "Skribu" || x === "");} 

и так далее до fV25, где «Skribu» является начальным Валу входных текстовых полей fontvorto1, fontvorto2 и так далее. OnClick полей ввода следующим образом:

onclick="if(fV2k()){alert(admonition);} else {this.value='';}" 

, но это не работает. Также

onclick="p = fV2k(); if(p){alert(admonition);} else {this.value='';}" 

не работает. Итак, я изо всех сил пытался изучить некоторые логические и логические объекты, и я пришел к выводу, что я должен создать «var p = new Boolean()». Теперь у меня есть:

var p = new Boolean(); 
function fV2k() {x = document.getElementsByName('fontvorto2')[0].value.substr(0, 6); p = Boolean(x == "Skribu" || x === "");} 
function fV3k() {x = document.getElementsByName('fontvorto2')[0].value.substr(0, 6); p = Boolean(x == "Skribu" || x === "");} 

и так далее, что это неправильно, конечно, потому что я должен относиться к р как функции, а не присвоить значение здесь. Каждый раз, когда я представляю «инновации», я чувствую оптимизм, что теперь я решаю проблему, но каждый раз моя надежда разрушается. Надеюсь, я был ясен и что некоторым «специалистам» нравится эта проблема.

ответ

1

Храните его простым. Ваша функция должна просто проверить значение и возвращает результат, как это:

function fV3k() { 
    var x = document.getElementsByName('fontvorto2')[0].value.substr(0, 6); 
    return x === "Skribu" || x === ""; 
} 

Или, возможно, принять во имя в качестве параметра, так что вы можете уменьшить общее количество функций, что вам нужно написать:

function fV(name) { 
    var x = document.getElementsByName(name)[0].value.substr(0, 6); 
    return x === "Skribu" || x === ""; 
} 

И затем использовать его в качестве

onclick="if(fV('fontvorto1')){alert(admonition);} else {this.value='';}" 
... 
onclick="if(fV('fontvorto2')){alert(admonition);} else {this.value='';}" 
+0

Спасибо большое, PSWG ! Я начал так просто, как вы теперь предлагали, но для некоторых, теперь неидентифицируемых причин, это не сработало. – user2772060

+0

@ user2772060 Ну, если у вас возникли проблемы с реализацией этого точного решения, вероятно, вам следует открыть еще один вопрос. Прежде чем вы это сделаете, вы должны попытаться сделать [jsFiddle] (http://jsfiddle.net/), который демонстрирует полную проблему и дублирует проблему. –

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