2013-07-17 2 views
1

Как я могу проверить, если множественный массив пуст (фаллос []) Heres мой код:Как проверить, является ли массив multiselect пустым в javascript?

<tr><td>Fallos reportados: </td><td><select name="fallos[]" size="6" multiple="multiple" > 
    <?php 
    $query = "SELECT falla_id,falla FROM falla order by falla"; 
    $result = mysql_query($query); 
    if (!$result) die ("Database access failed: " . mysql_error()); 
while ($fila = mysql_fetch_array($result, MYSQL_ASSOC)){ 
    echo "<option value=\"".$fila["falla_id"]."\">".$fila["falla"]."</option>"; 
} 
    ?></td> 
</tr> 

и вот подтверждение, что i'm решений, но это не распространяется работает

function validate(form) { 
    fail = validateIMEI(form.IMEI.value) 
    fail += validateTelefono(form.numero_telefono.value) 
    fail += validateICCID(form.ICCID.value) 
    fail += validateFallos(form.fallos.value) 
    if (fail === "") return true 
    else { alert(fail); return false } 

} 

Вот конкретный вариант, который проверяет фаллос []:

function validateFallos(field) { 
    if(field=== "") return "No se ha ingresado tipo de fallos" 
    //if (field==="") return "No se han ingresado los tipos de fallos.\n" 
    return "" 
} 

ответ

3
validateFallos(form.fallos.value) 

form не содержит fallos. У вас есть элемент с именем fallos[], к которому вы можете получить доступ: form['fallos[]'] или более предпочтительно form.elements['fallos[]']. Если вы хотите придерживаться form.fallos, вы можете добавить id="fallos" в свой тег.

+1

+1 для определения того, что _JavaScript_ не распознает '[]' как имеющее особый смысл в атрибуте _name_. Следующее jsfiddle может представлять интерес http://jsfiddle.net/Rs3N3/ –

+0

ОК, он отлично работает с form.fallos.value при добавлении id = fallos спасибо !!!!! – user2565755

0

Вы пропускаете запятой в конце ваших строк кода ...

function validate(form) { 
    fail = validateIMEI(form.IMEI.value) 
    fail += validateTelefono(form.numero_telefono.value) 
    fail += validateICCID(form.ICCID.value) 
    fail += validateFallos(form.fallos.value) 
    if (fail === "") return true 
    else { alert(fail); return false } 
} 

Должно быть

function validate(form) { 
    fail = validateIMEI(form.IMEI.value); 
    fail += validateTelefono(form.numero_telefono.value); 
    fail += validateICCID(form.ICCID.value); 
    fail += validateFallos(form.fallos); 
    if (fail === "") return true; 
    else { alert(fail); return false; } 
} 

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

function validateFallos(fallosField) { 
    var empty = true; 
    for (i=0; i < fallosField.length; i++) { 
     if (fallosField[i].selected) { 
      return ""; 
     } 
    } 
    return "No se ha ingresado tipo de fallos"; 
} 

Обратите внимание, как я изменил fail += validateFallos(form.fallos.value) к fail += validateFallos(form.fallos).

+0

Это похоже на то, что все, что вы сделали, это добавить точки с запятой ';', которые в любом случае являются необязательными (но предпочтительными). –

+0

О, вау, как глупо со мной - слишком много PHP! Забытые точки с запятой не являются обязательными в JS. Во всяком случае, я обновил свой ответ, чтобы дать вам исправить. – SharkofMirkwood

+0

Это по-прежнему не так :) –

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