2012-03-19 3 views
0

У меня есть форма с текстовыми вводами, и я проверяю, есть ли какие-либо пропущенные текстовые входы при отправке формы и есть предупреждение, в котором говорится, что строки были пропущены, и они должны заполнить их до того, как они будут сформированы. ,Проверьте, не было ли поле ввода текста отправлено при отправке формы?

Это код, который я использую, и я получаю сообщение об ошибке, которое nextEmptyLine не определено, если последняя строка пуста.

я набираюсь лин является количество строк для этого текстового ввода

var emptyLine = eval('document.forms.mainForm.itemLine_1_' + lin).value; 
var nextEmptyLine = eval('document.forms.mainForm.itemLine_1_' + [lin+1]).value;  

if((emptyLine == "") && (nextEmptyLine != ""){ 
    alert("You seem to have skipped a line. Please go back and close up the lines. We do not allow for skipped lines."); 
    submitOnce=false; 
    return false; 
} 
+0

Если вы может использовать структуру, которую я бы рекомендовал использовать jQuery и jQuery validate plugin. то вы получаете эту функциональность бесплатно. –

+0

Ничего себе, загрузите скрипт 100 КБ, 4000 строк плюс плагин плюс напишите код проверки, чтобы заменить функцию 10 строк. – RobG

ответ

0
> var emptyLine = eval('document.forms.mainForm.itemLine_1_' + lin).value; 

Ого, подлинный темные возрасты кода, где вы рыть, что по сравнению с? Разумное использование для eval немного и далеко. Как правило, никогда не используйте его.

Чтобы проверить, если каждый TextArea элемент имеет значение, отличное от пустой строки или все пробелы, используйте представить слушателю на форме:

<form onsubmit="return checkTextareas(this);" ...> 
    ... 
</form> 

Тогда функция:

function checkTextareas(form) { 
    var tas = form.getElementsByTagName('textarea'); 
    var re = /^\s*$/; 

    for (var i=0, iLen=tas.length; i<iLen; i++) { 
    if (re.test(tas[i].value)) { 
     // textarea has only whitespace or nothing in its value 
     // Tell the user why submit failed 
     alert('Ooops! You missed a line'); 
     return false; 
    } 
    } 
}