Как я проверяю массивы? - PullRequest
0 голосов
/ 24 мая 2011

У меня есть форма, которая имеет 4 столбца, и пользователь может динамически добавлять или удалять строки.Теперь я попытался проверить это с помощью JavaScript следующего кода: -

<script type="text/javascript">
function chkempty()
        {


    var x=document.forms["main"]["qty[]"].value
    var y=document.forms["main"]["price[]"].value
    var z=document.forms["main"]["item[]"].value
    if (x==null || x=="")   {
                            alert("Quantity must be filled out");
                            return false;
                            }
    if (y==null || y=="")   {
                            alert("Price must be filled out");
                            return false;
                            }
    if (z==null || z=="")   {
                            alert("Itemcode cannot be empty");
                            return false;
                            }   
        }

Это работает для первой строки, но когда пользователь выбирает более одной строки, даже после заполнения значений, онполучает сообщение об ошибке проверки.Может ли кто-нибудь помочь мне с этим, пожалуйста?Спасибо и продолжай улыбаться.

Ответы [ 3 ]

0 голосов
/ 24 мая 2011

document.forms.form_id.control_name вернет либо HTMLElementNode, либо NodeList в зависимости от наличия одного или нескольких соответствующих элементов.

Вы можете сделать что-то вроде:

var x=document.forms["main"]["qty[]"]
if (x.nodeName) {
    // Is a Node. Work with its value
} else {
    // Is a NodeList, loop over it with for
    for (var i = 0; i < x.length; i++) {
        var node = x[i];
        // Work with its value
    }
}
0 голосов
/ 24 мая 2011

ОЧЕНЬ простое решение здесь:

Использование Встроенный валидатор Jquery

Когда вы добавляете новые строки содержимого в таблицу, просто убедитесь, что у вас определен правильный класс (например, class="validate[required,custom[email]]"), чтобы убедиться, что он будет корректно проверять поле по вашему желанию. Я часто просто выполняю обязательный элемент, но приведенный выше пример также проверяет формат электронной почты. Есть дополнительные встроенные шашки для телефонных номеров, валюты и т. Д.

Если пользователь испортит ввод, рядом с полем с ошибкой появится диалоговое окно с подсказкой, похожее на подсказку.

Готово. Просто. Clean. Быстро.

Ни одно из этих решений не компенсирует тот факт, что вам действительно необходимо выполнить очистку и на стороне сервера. Любой Javascript может быть обойден, поэтому он не на 100% гарантированно безопасен или точен. Но это хорошее начало и обеспечивает качественную, мгновенную обратную связь с пользователем.

0 голосов
/ 24 мая 2011

var x = document.forms ["main"] ["qty []"]. Value

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

 var x=document.forms["main"]["qty"];
 for ( var i=0, len=x.length; i<len; ++i ){
    // validate the value of the current element.
 }

РЕДАКТИРОВАТЬ : добавлен небольшой пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...